Thema Datum  Von Nutzer Rating
Antwort
30.11.2015 13:28:20 Sofie
NotSolved
30.11.2015 14:19:04 Gast36311
NotSolved
30.11.2015 15:03:42 Gast29887
NotSolved
30.11.2015 19:35:16 Gast61909
NotSolved
03.12.2015 15:26:46 Sofie
NotSolved
Blau Suchfunktion und Kopieren
03.12.2015 17:46:57 Gast27361
NotSolved
04.12.2015 12:06:38 Sofie
NotSolved
04.12.2015 13:05:40 Sofie
NotSolved
05.12.2015 11:14:02 Gast20768
NotSolved
05.12.2015 11:18:17 Gast76748
NotSolved

Ansicht des Beitrags:
Von:
Gast27361
Datum:
03.12.2015 17:46:57
Views:
834
Rating: Antwort:
  Ja
Thema:
Suchfunktion und Kopieren

Hallo Sophie!

Kurz zum Verständnis:
Die Zeile Set ergebnis = Workbooks(quelle).Worksheets(1).Cells.Find(suche, LookIn:=xlValues) sucht nicht nur in einer Zeile sondern im ganzen Blatt. Da du bei deinem Beispiel die Bezeichner für Spalte (A bis Z ...) und Zeile (1 bis 99 .. ) vertauscht hast, war ich mir nicht sicher, wo du genau suchen willst. Könnte man aber auf eine Zeile (welche?) begrenzen.
Als ergebnis erhälts du keinen Wert sondern ein Objekt - die Zelle wo der Wert gefunden wurde. Wenn nichts gefunden wurde, is das Objekt Nothing. Man nutzt dann die doppelte Verneinung (nicht nichts = was , einen Wert gefunden an der Zelle) um sich die else Zeile des If Vergleichs zu sparen (ich hatte die else Zeile drin gelassen). Nur so kann man dem Programm sagen - "nix reinkopieren". :-)

Du hattest geschrieben, dass in Zeile B (habe ich mal als Zeile 2 interpretiert) eingefügt werden soll. Genau das macht diese Zeile
 Workbooks(quelle).Worksheets(1).Range(ergebnis.Row & ":" & ergebnis.Row).Copy Destination:=Workbooks(ziel).Worksheets(1).Range(2 & ":" & 2)
Hierbei steht Range(2 & ":" & 2) für Zeile 2. Ggf. hätte man da auch  Rows(2) für setzen können, dann wäre es ggf. besser zu erkennen. Für deinen Wunsch die Zeile zum Einfügen festzulegen einfach eine Variable zeile anlegen.
Der weist du deine Wunschzeile zu und ersetzt die Kopierzeile hiermit.
 Workbooks(quelle).Worksheets(1).Range(ergebnis.Row & ":" & ergebnis.Row).Copy Destination:=Workbooks(ziel).Worksheets(1).Rows(zeile)

(du kanst natürlich auch gleich am Ende der Zeile die Zeilennummer eintragen - ist aber bei Schleifen schlecht, da dann überschrieben wird)

Die Messagebox war optional. Das kann auch weg - war nur ein Vorschlag für dich beim Testen, damit du siehst, wenn nichts gefunden wurde und weißt, dass der Code aber bis dahin kam.

Also für deine Wiederholungen ist das kopieren der Codezeilen ein Möglichkeit aber unüblich und "unschön". Problem wäre, dass du nur die kopierte Anzahl an Wiederholungen  hast und der Code bläht sich auf - mehr Chancen zum Verschreiben. Um dynamisch mehrere Durchläufe (in Abhängigkeit vom Nutzer) zu realisieren, solltest du da auch mit Schleifen arbeiten. Wenn du schon weißt wieviele Dateien / Suchwerte dann mit eine For Schleife sonst mit ein while Schleife und den Nutzer befragen, was er suchen will und wo. Wenn du aber kopieren willst, dann nicht nur die IF Schleife. Die Quelle wird ja weiter oben festgelegt und die Suche auch. Das müsste mit kopiert werden.
Du kannst ja mal schauen ob du es hinbekommst. Ansonsten mal die Anzahl (fest oder Variabel je Nutzer?) der Dateien (liegen die alle im selben Pfad?) und die Anzahl der Suchen (auch wieder fest oder variabel?) posten. Dann könnte man den Code beispielhaft anpassen.

Viel Spaß noch

achja, so kompliziert wie das vlt. klingt ist es nicht :-)


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
30.11.2015 13:28:20 Sofie
NotSolved
30.11.2015 14:19:04 Gast36311
NotSolved
30.11.2015 15:03:42 Gast29887
NotSolved
30.11.2015 19:35:16 Gast61909
NotSolved
03.12.2015 15:26:46 Sofie
NotSolved
Blau Suchfunktion und Kopieren
03.12.2015 17:46:57 Gast27361
NotSolved
04.12.2015 12:06:38 Sofie
NotSolved
04.12.2015 13:05:40 Sofie
NotSolved
05.12.2015 11:14:02 Gast20768
NotSolved
05.12.2015 11:18:17 Gast76748
NotSolved