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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen