Wie finde ich das Wort "Beispiel", das in irgendeiner Zelle steht, mittels VBA?
Gruss
Fab
Option Base 1
Option Compare Text
Private Sub CmdStarten_Click()
Call Suchen_und_anzeigen
End Sub
Sub Suchen_und_anzeigen()
Dim n%, x%, xZelle%, yZelle%
Dim Meldung%, Pos%, Schleife%, y As Byte
Dim xTabelle() As String
Dim Adresse() As String
Dim Text As String
Dim Bereich As Range
Dim Begriff, Suchen()
'Bereich festlegen
Set Bereich = Application.InputBox _
("Bitte den zu durchsuchenden Bereich eingeben " & vbCrLf & _
"(z.B.: A1:T200),oder markieren Sie den Such-" & vbCrLf & _
"bereich im Tabellenblatt.", "Bereich festlegen", "A1:T200", Type:=8)
' Suchbegriff eingeben
Begriff = InputBox _
("Bitte den zu suchenden Wert eingeben. Sollen 2 Werte" & vbCrLf & _
"gleichzeitig gesucht werden, dann mit Zeichen + " & vbCrLf & _
"voneinander trennen (z.B.: Summe+die)." & vbCrLf & _
"ENTER ohne Wert = Abbruch", "S U C H M O D U S")
If Begriff = "" Then Exit Sub
Pos = InStr(Begriff, "+")
If Pos Then
ReDim Suchen(2)
Suchen(1) = Left(Begriff, Pos - 1)
Suchen(2) = Right(Begriff, Len(Begriff) - Pos)
Schleife = 2
Else
ReDim Suchen(1)
Suchen(1) = Begriff
Schleife = 1
End If
Application.ScreenUpdating = False
' Letzte Zelle des Bereiches ermitteln. Diese Zelle wird als Startzelle für
' die Suche deffiniert, da Suche nach dieser Zelle, also in erster Zelle
' des Bereiches beginnt.
With Worksheets(1).Range(Bereich.Address)
xZelle = .Columns(.Columns.Count).Column
yZelle = .Rows(.Rows.Count).Row
End With
' Eigentlicher Suchvorgang (in allen Tabellenblättern)
x = 1
For y = 1 To Schleife
For n = 1 To Sheets.Count
With Sheets(n).Range(Bereich.Address)
Set c = .Find(Suchen(y), After:=Cells(yZelle, xZelle), LookIn:=xlValues)
If Not c Is Nothing Then
ErsteAdresse = c.Address
Do
ReDim Preserve Adresse(x): ReDim Preserve xTabelle(x)
xTabelle(x) = Sheets(n).Name
Adresse(x) = c.Address(RowAbsolute:=False, ColumnAbsolute:=False)
Set c = .FindNext(c)
x = x + 1
Loop While Not c Is Nothing And c.Address <> ErsteAdresse
End If
End With
Next n
Next y
' Anzeige der Suchergebnisse
Text = vbCrLf
For n = 1 To x - 1
Text = Text & xTabelle(n) & Chr(9) & Chr(9) & "Zelle " & Adresse(n) & vbCrLf
Next n
Application.ScreenUpdating = True
' Die Anzahl der gefundenen Werte ist (x - 1), wenn keiner
' gefunden wurde dann ist x = 1
Select Case x
Case 1
Meldung = MsgBox("Es wurde kein übereinstimmender Wert gefunden", _
vbOKOnly, "G E F U N D E N E W E R T E")
Case 2
Worksheets(xTabelle(1)).Select
ActiveSheet.Range(Adresse(1)).Select
Meldung = MsgBox("Es wurde eine Übereinstimmung in" & vbCrLf & _
Text & vbCrLf & "gefunden", vbOKOnly, "G E F U N D E N E W E R T E")
Exit Sub
Case Else
For n = 1 To x - 1
Worksheets(xTabelle(n)).Select
ActiveSheet.Range(Adresse(n)).Select
Meldung = MsgBox("Drücken Sie JA, um den nächsten gefundenen " & _
"Wert zu sehen" & vbCrLf & "Insgesamt gibt es " & (x - 1) & _
" Übereinstimmungen!" & vbCrLf & Text, vbYesNo, "G E F U N D E N E W E R T E")
If Meldung = vbNo Then Exit Sub
Next n
End Select
End Sub
Sub suchen()
Cells.Find(what:="Beispiel").Activate
End Sub
Sub suchen()
Cells.Find(what:="Beispiel", lookin:=xlvalues, lookat:=xlpart).Activate
End Sub
Um das Wort "Beispiel" in einer Excel-Tabelle mit VBA zu finden, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen:
Öffne den VBA-Editor:
ALT + F11, um den VBA-Editor zu öffnen.Füge ein neues Modul hinzu:
Einfügen und wähle Modul.Kopiere den folgenden Code in das Modul:
Sub suchen()
Cells.Find(what:="Beispiel").Activate
End Sub
Schließe den VBA-Editor und gehe zurück zu Excel.
Führe das Makro aus:
ALT + F8, wähle suchen aus der Liste und klicke auf Ausführen.Fehler: "Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt"
.Find-Methode kein Objekt zurückgeben.Fehler: "Das Makro konnte nicht gefunden werden"
Problem: Suchergebnisse werden nicht angezeigt
Find-Methode, um die Suchparameter zu spezifizieren, wie im nächsten Abschnitt beschrieben.Wenn du eine spezifischere Suche benötigst oder die Find-Funktion nicht zu verwenden ist, kannst du die folgenden Methoden ausprobieren:
Erweiterte Suche mit VBA:
Sub suchen()
Cells.Find(what:="Beispiel", lookin:=xlvalues, lookat:=xlpart).Activate
End Sub
Diese Methode stellt sicher, dass die Suche sowohl in Werten als auch in Formeln durchgeführt wird.
Nutzung einer benutzerdefinierten Funktion:
Hier sind einige praktische Beispiele, wie du die Find-Funktion in Excel effizient nutzen kannst:
Einfacher Suchbefehl:
Sub suchen()
Dim Zelle As Range
Set Zelle = Cells.Find(what:="Beispiel")
If Not Zelle Is Nothing Then
MsgBox "Wort gefunden in: " & Zelle.Address
Else
MsgBox "Wort nicht gefunden."
End If
End Sub
Mehrere Suchbegriffe:
Sub suchen()
Dim Begriffe As Variant
Begriffe = Array("Beispiel", "Test")
Dim i As Integer
For i = LBound(Begriffe) To UBound(Begriffe)
Cells.Find(what:=Begriffe(i)).Activate
' Hier kannst du weitere Aktionen hinzufügen
Next i
End Sub
Nutze Application.ScreenUpdating = False: Wenn du mehrere Suchvorgänge in einer Schleife durchführst, setze Application.ScreenUpdating auf False, um die Performance zu verbessern.
Sichere deine Einstellungen: Vor der Verwendung der Find-Funktion, speichere die aktuellen Einstellungen (z.B. LookIn, LookAt), um unerwartete Ergebnisse zu vermeiden.
Verwende FindNext: Um alle Vorkommen eines Begriffs zu finden, kannst du die FindNext-Methode nutzen, um durch die gefundenen Zellen zu iterieren.
1. Wie kann ich die Suchparameter anpassen?
Du kannst die Find-Methode anpassen, indem du zusätzliche Parameter wie lookin (z.B. xlValues oder xlFormulas) und lookat (z.B. xlPart oder xlWhole) hinzufügst.
2. Funktioniert das in allen Excel-Versionen?
Ja, die Find-Funktion ist in allen modernen Excel-Versionen verfügbar (Excel 2007 und höher). Achte darauf, dass dein Excel-Makro aktiviert ist.