Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

excel Makro Suchen und Kopieren

excel Makro Suchen und Kopieren
23.06.2014 14:28:51
Stefan

Habe jetzt folgendes Problem.
Wenn ich die Suchfunktion nutze kopiert er leider nicht mehr das Format der Zellen mit. Ausserdem fängt er nicht bei D2 an mit dem einfügen.
Ich glaube meine Schleife arbeitet auch nicht richtig da er im Tabellenblatt "DP" in der Spalte L nach Begriffen suchen soll. Er soll ja nach dem ersten Treffer weiter suchen und die nächsten Treffer unter den ersten setzten.
Am besten ihr probiert es selber mal aus wenn ihr zb den suchbegriff "laufen" eingebt. Richtig kopieren einfügen tut er es zb. wenn unter Hauptthema "Sport" ausgewählt wird und Unterthema "Laufen" so sollte er das auch einfügen wenn ich die suchfunktion nutzen würde.
https://www.herber.de/bbs/user/91228.xlsm
Danke schon mal für eure Hilfe !

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: excel Makro Suchen und Kopieren
25.06.2014 03:25:06
Michael
Hallo Stefan,
Deine Tabelle hat mich was Nerven gekostet! Aber ruhig Blut, ein guter Teil davon ist auf meine eigene Unkenntnis zurückzuführen: das kostet immer soooo viel Zeit.
Also: klar ist, daß VBA nicht bei D2 anfängt, sondern bei D3, weil die Zählvariable mit 3 vorbelegt ist anstelle der 2. Daß das Format nicht mitkopiert wird, liegt wiederum an den Parametern von Pastespecial.
Ich habe mir erlaubt, den Kopf von dat janze etwas zu ändern:
Option Explicit
Dim c, firstaddress As Range
Dim OK As String
Dim iZähler As Integer
Option explicit sorgt dafür, daß Variablen nur bei exakter Schreibweise funktionieren, das ist hilfreich, um etwaige Tippfehler zu vermeiden. OK habe ich als String statt als Variant definiert.
Du solltest Deiner Input-Box eine Abfrage gönnen, damit das Skript nicht gleich in eine Endlosschleife geht, wenn man auf "Abbruch" klickt. Siehe unten.
Die angepaßte Version Deiner s*u*b suchen sieht so aus:
Sub suchen()
Range("D2:M49").Clear
iZähler = 2
OK = InputBox("Suchbegriff eingeben " + Chr$(13) + Chr$(13), "Suchen")
If OK = "" Then Exit Sub
Set c = Sheets(Tab1).Range("L2:L500").Find(Trim(OK), LookIn:=xlValues)
If Not c Is Nothing Then
Set firstaddress = c
Do
Sheets(Tab1).Select
Range(Cells(c.Row, 1), Cells(c.Row, 10)).Copy
'      MsgBox "c.row" & c.Row & "izähler" & iZähler
Sheets(Tab2).Select
Cells(iZähler, 4).Select
Selection.PasteSpecial
iZähler = iZähler + 1
Set c = Sheets(Tab1).Range("L2:L500").FindNext(c)
Loop While Not c Is Nothing And c <> firstaddress
End If
End Sub
Mit "laufen" tut sie, andere Sachen habe ich jetzt nicht ausprobiert.
Aber: die nächste Fehlerquelle liegt auf der Hand, nämlich die Spalte L im Blatt DP: schau Dir L37 an. Du hast mehrere Zellen verbunden, und das läßt sich in VBA so nicht auflösen: Du findest EINMAL L37, kopierst A37 bis J37, während A38 bis J38 unter den Tisch fällt. Durch den Zellverbund existiert nämlich eine Zelle L38 gar nicht, wovon Du Dich links oben im Namensfeld überzeugen kannst, wenn Du L37 anklickst und einmal den Pfeil nach unten drückst: es folgt L39.
Bevor Du einen Riesenworkaround programmierst, isses einfacher, die verbundenen Zellen zu trennen und die Werte dann eben in JEDE Zeile zu schreiben.
Happy Exceling,
Michael

Anzeige

340 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige