Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: Suche in Autofiltern in verschiedenen Spalten
von: Jeff
Geschrieben am: 16.09.2019 08:41:18
Guten Tag,
ich habe vor einiger Zeit ein Makro mithilfe des Makrorecorders aufgenommen und ein bisschen umgeschrieben. Das Makro sucht in einer Tabelle mithilfe eines Filters nach Werten und kopiert diese in eine andere Tabelle hinein. Den Wert, mit dem gesucht wird, gibt es nur einmal in allen Tabellen. Er kann allerdings in verschiedenen Zeilen oder auch in anderen Tabellen auf anderen Arbeitsblättern zu finden sein.
Ich möchte, dass das Makro alle möglichen Tabellen und Spalten nach dem Wert durchsucht.
Z.B.: der wert 1234 soll auf Arbeitsblatt "Rollen1" in Autofilter Feld4 gesucht werden, wenn er da nicht zu finden ist, dann in Autofilter Feld 5, wenn er da nicht zu finden ist, dann in Arbeitsblatt "Rollen2" in Autofilter Feld 3 usw. bis er den Wert in einer der Spalten gefunden hat. Dann soll er Werte aus dieser Reihe in eine andere Tabelle kopieren.
Mein momentanes Problem ist, dass ich das Makro nicht so schreiben kann, dass der Autofilter, wenn er darin nichts gefunden hat, zurückgesetzt wird. Mein momentanes Makro sucht den Wert im ersten Filter und wenn er da nicht drinne ist spuckt er einen Fehler aus.
Ich hoffe mein Problem ist verständlich.
Danke im Vorraus =)
Das ist ein Teil meines momentanen Makros:
Range("B13").Select
Selection.Copy
Sheets("Kalibrierrollen halb").Select
ActiveSheet.Range("$A$40:$Y$1474").AutoFilter Field:=4, Criteria1:=Worksheets("Tabelle2").Range("B13")
ActiveSheet.Range("I41:I" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Tabelle2").Select
Range("O13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Kalibrierrollen halb").Select
ActiveSheet.Range("J41:J" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Tabelle2").Select
Betrifft: AW: Suche in Autofiltern in verschiedenen Spalten
von: 1713253.html
Geschrieben am: 16.09.2019 09:33:48
Hallo Jeff,
warum nicht einfach mit Suchen, also Strg+F per Makro? Wenn es den Wert nur einmal gibt.
Ein Beispiel:
Public Sub Test() Dim objCell As Range With Worksheets("Kalibrierrollen halb") Set objCell = .Cells.Find(What:="1234", _ LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) If Not objCell Is Nothing Then Call .Cells(objCell.Row, 9).Copy Call Worksheets("Tabelle2").Cells(13, 15).PasteSpecial(Paste:=xlPasteValues) Else With Worksheets("Kalibrierrollen ganz") '2. Tabelle in der gesucht wird Set objCell = .Cells.Find(What:="1234", _ LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) If Not objCell Is Nothing Then Call .Cells(objCell.Row, 9).Copy Call Worksheets("Tablle2").Cells(13, 15).PasteSpecial(Paste:=xlPasteValues) Else Call MsgBox("Suchbegriff nicht gefunden.", vbExclamation, "Hinweis") End If End With End If End With End Sub
Betrifft: AW: Suche in Autofiltern in verschiedenen Spalten
von: 1713880.html
Geschrieben am: 19.09.2019 13:16:22
Hallo Nepumuk
Danke für dein Beispiel, aber leider kenne ich mich selber zu wenig aus um das für das komplette Makro umzusetzen.
Könntest du mir ein Beispiel schreiben, in dem in einem Autofilter gesucht wird, wenn in diesem nichts gefunden wird, wird er zurückgesetzt und stattdessen in einem anderen Autofilter gesucht. Und wenn auch da nichts gefunden wird dass dann in einem anderen Arbeitsblatt in einem Autofilter gesucht wird.
Kenne mich mit dem if-then Krams leider gar nicht aus.
Sorry für die Umstände >.<
Und Danke nochmal im Voraus
Gruß Jeff
Betrifft: AW: Suche in Autofiltern in verschiedenen Spalten
von: 1713917.html
Geschrieben am: 19.09.2019 14:44:52
Hallo Jeff,
dann brauche ich eine Mustermappe.
Gruß
Nepumuk