Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Gleiche Eintäge in einer Spalte nacheinander finde | Herbers Excel-Forum


Betrifft: Gleiche Eintäge in einer Spalte nacheinander finde von: Malcolm_p
Geschrieben am: 15.10.2008 23:08:59

Hallo zusammen!

Wenn ich einen bestimmten Eintrag - per VBA - in einer Spalte finden möchte verwende ich der Regel den folgenden Code:

Dim NameSP As Range
Set NameSP = Sheets("Konten").Rows(1).Find( _
What:=Textbox1, _
Lookat:=xlWhole, _
LookIn:=xlValues)

Dim Erfdat As Range
Set ErfDat = Sheets("Konten").Columns(NameSP.Column).Find( _
What:=TextBox2, _
Lookat:=xlWhole, _
LookIn:=xlValues)

In der ersten Zeile (Überschriftenzeile) des Sheets "Konten" wird hierbei nach dem Namen gesucht, welcher in der Textbox1 der UF eingegeben wurde. Hierdurch wird die zu durchsuchende Spalte (NameSP) festgelegt.

Die Spalte (NameSP) wird anschließend nach unten durchlaufen, auf der Suche nach dem - in diesem Fall - Datum aus Textbox2.

Das Funktioniert soweit auch wunderbar. Der Code findet zuverlässing den ersten entsprechenden Eintrag in der Spalte, aber leider auch nur den ersten.

Denn ich möchte über eine If-Bedingung den Buchungstext, welcher exakt eine Spalte weiter vom Buchungsdatum steht nach einem bestimmten Kriterium abfragen, und soweit dieser Buchungstest nicht dem Kriterium entspricht, die Suche in der Datumsspalte nach unten fortsetzten.

Hier liegt mein Problem, dass immer beim ersten entsprechenden Eintrag die Suchbedingung abbricht.
Ich komme auch nach lagem Hin und Her auf keinen Lösungsansatz.

Ich hoffe soweit ist alles verständlich.

Wer hat hier einen intelligenten Ansatz für mich?

Herzlichen Dank vorab!

Malcolm_p


  

Betrifft: AW: Gleiche Eintäge in einer Spalte nacheinander finde von: Daniel
Geschrieben am: 16.10.2008 00:40:29

HI

ich würde da einen ganz anderen Ansatz verfolgen:
einfach den Autofilter setzen und nach DATUM und BUCHUNGSTEXT filtern, dann sollte eigentlich nur die gesuchte Zeile sichtbar bleiben

ansonsten gibts noch die FINDNEXT-Funktion, um die nächste Zelle mit dem gleichen Suchbedingungen zu finden.

Gruß, Daniel


  

Betrifft: AW: Gleiche Eintäge in einer Spalte nacheinander finde von: Beverly
Geschrieben am: 16.10.2008 07:56:47

Hi Malcolm,

nach diesem Prinzip

Sub zellinhalt_suchen()
   Dim raZelle As Range
   Dim strStartadresse As String
   With Sheets("Konten").Columns(NameSP)
       Set raZelle = .Find(TextBox2, lookat:=xlWhole, LookIn:=xlValues)
       If Not raZelle Is Nothing Then
           strStartadresse = raZelle.Address
           Do
               If raZelle.Offset(0, 1) = "erledigt" Then  '<==Kriterium anpassen
                  MsgBox raZelle.Address
                  Exit Do
               End If
               Set raZelle = .FindNext(raZelle)
           Loop While Not raZelle Is Nothing And raZelle.Address <> strStartadresse
       End If
   End With
End Sub



GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Gleiche Eintäge in einer Spalte nacheinander finde von: MalcolmP
Geschrieben am: 20.10.2008 12:36:51

Hallo Karin,



herzlichen Dank, ich hab zwar Deinen Code inhaltich (also vom Ablauf) nicht verstanden, aber er funktioniert einwandfrei...



Danke nochmals



Malcolm


  

Betrifft: AW: Gleiche Eintäge in einer Spalte nacheinander finde von: Beverly
Geschrieben am: 20.10.2008 17:48:57

Hi Malcolm,

hier noch mal mit Kommentaren. Ich hoffe, sie helfen dir, den Code besser zu verstehen.

Sub zellinhalt_suchen()
   Dim raZelle As Range             ' Variable für die Suchzelle
   Dim strStartadresse As String    ' Variable für die Adresse der ersten gefundene Zelle
   With Sheets("Konten").Columns(NameSP)
'      Inhalt der TextBox2 in der Spalte suchen, genaue Übereinstimmung, Such ein Werten
       Set raZelle = .Find(TextBox2, lookat:=xlWhole, LookIn:=xlValues)
'      Suchzelle wurde gefunden
       If Not raZelle Is Nothing Then
'          Adresse der Suchzelle auf die Variable schreiben
           strStartadresse = raZelle.Address
'          Schleife
           Do
'              Zelle rechts neben der Suchzelle beinhaltet der Begriff
               If raZelle.Offset(0, 1) = "erledigt" Then  '<==Kriterium anpassen
                  MsgBox raZelle.Address
'                 Schleife verlassen
                  Exit Do
               End If
'              nächste Suchzelle
               Set raZelle = .FindNext(raZelle)
'          Schleife so lange wiederholen wie noch Suchzellen gefunden und deren Adresse
'          verschieden von der Startadresse ist
           Loop While Not raZelle Is Nothing And raZelle.Address <> strStartadresse
       End If
   End With
End Sub




GrußformelBeverly's Excel - Inn


Beiträge aus den Excel-Beispielen zum Thema "Gleiche Eintäge in einer Spalte nacheinander finde"