ich habe schon ganzen Tage die vorhandenen Tips durchgeforstet, habe aber keine Antwort auf mein Problem finden können. Ich hoffe hiermit findet sich ein Spezi, der mir bei der Arbeit weiter helfen kann.
Beim Vergleich zweier Tabellenblätter wollte ich einfach die Suchfunktion aus der Leiste (Bearbeiten/Suchen) ausnutzen und in mein Macro aktiv einbauen.
Das Macro soll alle Zellen des (bestimmtes) eingegebenes Blattes mit meiner Angabe vergleichen und bei Übereinstimmung einer Zelle, die ganze Zeile ausschneiden und in ein anderes Tabellenblatt einfügen.
Das funktioniert einwandfrei so lange bis:
sich der gesuchte Text in ingerdeiner Zelle nicht mehr befindet. Dann reagiert der Excel mit einer Meldung im MsgBox, dass keine übereinstimmenden Daten mehr zu finden sind.
Im Makroverlauf erzeug dieses ein Laufzeitfehler 91 (Objektvariable oder WithBlockVariable nicht festgelegt) Soweit klar.
Wie sag ich dem Macro, wenn du auf diese Fehlermeldung (Laufzeitfehler 91) stosst, mach dieses zu und /oder verfahre weiter mit Befehlen die nach Then eingefügt sind. If, then, else, elseIf Befehle sind klar. Diese lassen sich aber nicht in Verbindung mit meinen
Cells.Find(What:="blabla", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
Angaben benutzen.
--------------------------------------
Ich hätte aus dem Bauch heraus geschrieben:
If
Cells.Find(What:="blabla", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
Than .........
oder
Cells.Find(What:="blabla", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
If (Fehlermeldung - MsgBox(")
Than (weiter....)
oder bestätige beenden im aktiven MsgBox und mach an der gekennzeichneten Stelle weiter.
oder, oder, oder,....
......Es hilft alles nicht.
es ist sicher wieder ganz einfach.
Dann wurde ich gerne :
Cells.Find(What:="blabla" hier ein Zellenbezug (mit ständig anderen Textwerten) anstatt blabla gerne haben
Kann ich es mit
Cells.Find(What:="Range("G11").Value" bewätigen?
Danke
Andri
hier ist das ganze Teil zur Ergänzung:
Sub Makro9()
Range("A1").Select
Selection.Copy
Sheets("Tabelle1").Select
Range("A1").Select
Cells.Find(What:="blabla", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
ActiveCell.Rows("1:1").EntireRow.Select
Application.CutCopyMode = False
Selection.Cut
Sheets("Tabelle3").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1:M1").Select
Selection.Cut
ActiveWindow.SmallScroll ToRight:=9
Application.CutCopyMode = False
Selection.Cut Destination:=Range("C1:O1")
Range("C1:O1").Select
ActiveWindow.SmallScroll ToRight:=-9
Range("A1").Select
Sheets("Tabelle2").Select
Range("A1").Select
Selection.Copy
Sheets("Tabelle3").Select
Range("A1").Select
ActiveSheet.Paste
Rows("1:1").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown
Range("A1").Select
Sheets("Tabelle2").Select
Range("A1").Select
End Sub