Clever-Excel-Forum

Normale Version: Suchmakro - Zellen ueberspringen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Excel Profis,
 
ich habe ein kleines Makro geschrieben, dass mir aus einer Tabelle einen Wert kopiert, in einer zweiten sucht und dann so lange nach unten sucht bis ein Datum steht. Dieses Datum wird kopiert und wieder in Tabelle 1 uebertragen. Funktioniert so weit auch sehr zuverlaessig. ABER: Sobald in Tabelle 1 ein Wert steht, der nicht in Tabelle steht steigt das Makro aus. Irgendwie bekomme ich's nicht hin dann den Wert einfach zu ueberspringen. Ich habe eine kleine Beispiel Datei erstellt, die das Problem wahrscheinlich am besten erklaert. Der Buchstabe j ist nur im Tabelle 1 jedoch nicht in Tabelle 2 vorhanden.
Ergebnis sollte sein, dass das Makro auch dann fortgefuehrt wird wenn der Wert aus Tabellenblatt 1 nicht in Blatt 2 zu finden ist.

Vielen Dank schon einmal!
Hallo,

ich habe Dein Makro etwas zusammengestaucht (könnte man bei dem Makro fast wörtlich nehmen Blush ) und Deinen Wunsch eingearbeitet.

Statt Deines bisherigen Codes nimmst Du unten stehenden:


Code:
Sub Makro1()

Dim i As Long, lngZ As Long, j As Long 'Zählvariablen als Long deklariert (Zahlen im bestimmten Bereich)
Dim lngLetzte As Long 'Variable für eine Zahl, wird mit der letzten belegten Zeilennummer belegt
Dim strgSuchtext As String 'enstspricht deiner Variablen c
Dim rngFund As Range 'RngFund ist die Fundzelle in der der Suchtext gefunden wurde


lngZ = Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row
'Application.ScreenUpdating = False

For i = 4 To lngZ
 With Sheets("Tabelle2")
   lngLetzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
   strgSuchtext = Sheets("Tabelle1").Cells(i, 1).Value
   Set rngFund = .Cells.Find(what:=strgSuchtext, LookIn:=xlValues, lookat _
         :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
         False, SearchFormat:=False)
   If Not rngFund Is Nothing Then
       j = rngFund.Row
       Do
         j = j + 1
         If IsDate(.Cells(j, rngFund.Column)) Then Sheets("Tabelle1").Cells(i, 6) = .Cells(j, rngFund.Column)
       Loop Until IsDate(.Cells(j, rngFund.Column)) = True Or j > lngLetzte
   End If
 End With
Next
       
End Sub

Der Code kann in ein allgemeines Modul eingefügt werden und unabhängig des aktiven Blattes aus jedem Blatt heraus aufgerufen werden.
Gesucht werden immer Werte aus Tabelle1 in Tabelle2.
Wow, vielen Dank!
Nicht nur, dass das Makro jetzt vollstaendig tut was es soll, es ist auch noch um Welten schneller als zuvor. Da erkennt man dann doch den Unterschied zwischen 'Trial and Error' und einer vernuenftigen Loesung!

Vielen Dank fuer die kompetente und schnelle Loesung!
Hallo,


ich hatte jetzt das



Code:
Application.ScreenUpdating = True


.........Code

Application.ScreenUpdating = False


nicht eingebaut, weil ich davon ausging, dass Du es selber hinbekommst.