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 :-)
|