Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1116to1120
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform soll Teil eines Strings in Spalte suchen

Userform soll Teil eines Strings in Spalte suchen
Jaffi
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!!
:*
AW: Userform soll Teil eines Strings in Spalte suchen
11.11.2009 08:39:13
David
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
AW: Userform soll Teil eines Strings in Spalte suchen
11.11.2009 08:50:37
Jaffi
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 ;)
AW: Userform soll Teil eines Strings in Spalte suchen
11.11.2009 09:25:21
David
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
Anzeige
AW: Userform soll Teil eines Strings in Spalte suchen
11.11.2009 09:46:52
Jaffi
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!
AW: Userform soll Teil eines Strings in Spalte suchen
11.11.2009 10:01:58
David
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
Anzeige
zeig doch mal ein paar Stringbeispiele ...
11.11.2009 10:14:15
Matthias
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
Anzeige
so habe ich es verstanden...
11.11.2009 10:16:36
Tino
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
Anzeige
und bedingte Formatierung fällt def. aus ? oT
11.11.2009 08:49:21
Matthias
Hallo
Userbild
Gruß Matthias
AW: und bedingte Formatierung fällt def. aus ? oT
11.11.2009 08:53:46
Jaffi
Hallo Matthias,
vielen Dank für das hübsche Bild ;)
Aber was soll mir das sagen ? ;))
die Frage stand doch im Betreff oT
11.11.2009 08:56:12
Matthias
AW: die Frage stand doch im Betreff oT
11.11.2009 08:59:40
Jaffi
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.
ICH HABS !!! ;o)
11.11.2009 10:10:55
Jaffi
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.
Anzeige
AW: ICH HABS !!! ;o)
11.11.2009 10:18:59
David
wie gesagt, bei großen Datenmengen ist diese Variante auf jeden Fall langsamer, aber wenn du damit zufrieden bist...
Gruß
David

345 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige