Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Userform soll Teil eines Strings in Spalte suchen | Herbers Excel-Forum


Betrifft: Userform soll Teil eines Strings in Spalte suchen von: Jaffi
Geschrieben am: 11.11.2009 08:15:30

Hallo liebe Mitstreiter,

nun habe ich mal wieder ein Problem welches ich nicht alleine lösen kann :(

Ich möchte mithilfe einer UserFom und einer For-Schleife 3 Buchstaben bzw, Zahlen oder beides in einer Spalte suchen. Ich gebe also 3 Zeichen in die Textbox ein und die Prozedur soll nun jeden in Spalte A befindlichen String durchsuchen. Der eingegebene Suchstring besteht IMMER ausser 3 Zeichen, die sich IMMER an den letzten 3 Stellen der zu durchsuchenden Strings befinden.(Wenn der gesuchte String vorhanden ist) Findet die Prozedur einen String in der Spalte der die letzten 3 Stellen des gesuchten Strings enthält, soll die Zelle A und B der gefunden Zeile Rot werden.

Ich habe schon mal ein bisschen mit Like gespielt, denke aber das ich auf den Holzweg bin, oder??

Habt Ihr einen Denkanstoss für mich??

Mal wieder tausend Dank!!
:*

  

Betrifft: AW: Userform soll Teil eines Strings in Spalte suchen von: David
Geschrieben am: 11.11.2009 08:39:13

Hallo Jaffi,

eine Schleife wäre hier wohl überflüssig.
Versuchs mal mit FIND
(entspricht dem Suchen-Befehl aus dem Excel-Menü, am besten per Recorder aufzeichnen und den Code entsprechend anpassen, auch in der VBA-Hilfe steht dazu ausreichendes)

Gruß
David


  

Betrifft: AW: Userform soll Teil eines Strings in Spalte suchen von: Jaffi
Geschrieben am: 11.11.2009 08:50:37

Hallo
ersteinmal Danke für deine Tipp,

ABER die FOR Schleife ist notwendig, da die Strings mehrfach vorkommen können. Und soweit ich mit meinem Anfängerwissen weis, hört die Find-Methode auf zu suchen sobald sie was gefunden hat..

Korrigiert mich bitte wenn ich falsch liege ;)


  

Betrifft: AW: Userform soll Teil eines Strings in Spalte suchen von: David
Geschrieben am: 11.11.2009 09:25:21

dafür gibt es dann .FindNext

Aus diesem Grund auch mein Hinweis auf die Hilfe, dort ist das relativ gut am Beispiel erklärt. Auch wird dort gezeigt, wie man den Code so aufbaut, dass der Fehler, der dann entsteht, wenn der Suchbegriff nicht vorhanden ist, abgefangen wird.

Gruß
David


  

Betrifft: AW: Userform soll Teil eines Strings in Spalte suchen von: Jaffi
Geschrieben am: 11.11.2009 09:46:52

ok verstehe...

aber bei diese Methode sucht er lediglich den String. Der String darf aber nur an den letzten 3 Positionen stehen um als erfolgreiche Suche deklariert zu werden. Der Findnext ist es egal wo der Suchstring steht. Und das hilft mir leider nicht weiter :(

trotzdem Danke!

Hat noch irgendjemand einen Tip??

Tausend Dank!


  

Betrifft: AW: Userform soll Teil eines Strings in Spalte suchen von: David
Geschrieben am: 11.11.2009 10:01:58

Nur nicht voreilig aufgeben. Wenn der String gefunden ist, kann man ja immer noch auf die Stelle prüfen.
Auf diese Art und Weise werden NUR die Stellen geprüft, die den String auch enthalten. Bei einer Schleife würde JEDE Zelle geprüft, was bei großen Datenmengen schon mal eine Weile dauern kann.

Hier mal ein Beispiel auf Basis der Excel-Hilfe:
Tabelle1

 B
4text
5anderertext
6text123
7anderertext123
8123wasweissich
9genau123
10oder123auch

Tabellendarstellung in Foren Version 4.11

Option Explicit

Sub suchen()

Dim c, FirstAddress

With Worksheets("Tabelle1").Range("B:B")
    Set c = .Find(123)
    If Not c Is Nothing Then
        FirstAddress = c.Address
        Do
            If Right(c.Value, 3) = 123 Then
                MsgBox "gefunden: " & c.Address
            End If
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> FirstAddress
    End If
End With

End Sub
Gruß
David


  

Betrifft: zeig doch mal ein paar Stringbeispiele ... von: Matthias L
Geschrieben am: 11.11.2009 10:14:15

Hallo

Wie sehen denn z.B. die Strings aus? Zeig doch mal ein paar Beispiele
mit einer Erklärung, wann markiert werden soll und wann nicht.



Sind mehrere Strings in einer Zelle und Du suchst z.B den String "ute"
Wann soll in den 5 folgenden Beispielen denn farblich markiert werden?

Heute reitet Ute auf der Stute
Heute reitet Jaffi auf dem Kamel
Morgen ist Ute im Kino
Mittwoch ist Heute
Keiner reitet heute das Kamel


oder brauchst Du nur immer die letzten 3 Zeichen in einer Zelle zu prüfen?



Gruß Matthias


  

Betrifft: so habe ich es verstanden... von: Tino
Geschrieben am: 11.11.2009 10:16:36

Hallo,
versuche es mal hiermit.

Private Sub CommandButton1_Click()
Dim rngZelle As Range, LRowErste As Long, rngBereich As Range

 With Sheets("Tabelle1").Columns("A:A")
     
     .Interior.ColorIndex = xlColorIndexNone
     
     If TextBox1 <> "" Then
        Set rngZelle = .Find(What:="*" & TextBox1, LookIn:=xlValues, LookAt _
                             :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                             MatchCase:=False, SearchFormat:=False)
         
        If Not rngZelle Is Nothing Then
             Set rngBereich = rngZelle
             LRowErste = rngZelle.Row
             Set rngZelle = .FindNext(rngZelle)
             
             Do While LRowErste <> rngZelle.Row
              Set rngBereich = Union(rngZelle, rngBereich)
              Set rngZelle = .FindNext(rngZelle)
             Loop
        End If
       
        If Not rngBereich Is Nothing Then rngBereich.Interior.ColorIndex = 3
    End If
 End With

End Sub
Gruß Tino


  

Betrifft: und bedingte Formatierung fällt def. aus ? oT von: Matthias L
Geschrieben am: 11.11.2009 08:49:21

Hallo



Gruß Matthias


  

Betrifft: AW: und bedingte Formatierung fällt def. aus ? oT von: Jaffi
Geschrieben am: 11.11.2009 08:53:46

Hallo Matthias,

vielen Dank für das hübsche Bild ;)

Aber was soll mir das sagen ?? ;))


  

Betrifft: die Frage stand doch im Betreff oT von: Matthias L
Geschrieben am: 11.11.2009 08:56:12




  

Betrifft: AW: die Frage stand doch im Betreff oT von: Jaffi
Geschrieben am: 11.11.2009 08:59:40

oh ok..sorry...

bedingte Formatierung fällt aus, weil ich diese Suchfunktion nur bruahce wenn ich was suche...und die Suche des Strings ändert sich von Fall zu Fall...deswegen die Suche per UserForm.


  

Betrifft: ICH HABS !!! ;o) von: Jaffi
Geschrieben am: 11.11.2009 10:10:55

eigentlich ganz einfach:

      With ActiveSheet
      Dim suchstring As String
      Dim varFehlt As Long
      suchstring = TextBox1.Value
            For varFehlt = 1 To .Cells(.Rows.Count, 2).End(xlUp).Row
            If .Cells(varFehlt, 1).Value Like "?????????" & suchstring Then
            ActiveSheet.Unprotect Password:="****"
              .Rows(varFehlt).Cells(1).Interior.ColorIndex = 36
              .Rows(varFehlt).Cells(2).Interior.ColorIndex = 36
            ActiveSheet.Protect Password:="****"
            End If
            Next varFehlt
        End With
End Sub
vg
J.


  

Betrifft: AW: ICH HABS !!! ;o) von: David
Geschrieben am: 11.11.2009 10:18:59

wie gesagt, bei großen Datenmengen ist diese Variante auf jeden Fall langsamer, aber wenn du damit zufrieden bist...

Gruß
David


Beiträge aus den Excel-Beispielen zum Thema "Userform soll Teil eines Strings in Spalte suchen"