Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Finde Wort "Beispiel" mit VBA

Forumthread: Finde Wort "Beispiel" mit VBA

Finde Wort "Beispiel" mit VBA
09.10.2003 14:31:28
Fab
Hi

Wie finde ich das Wort "Beispiel", das in irgendeiner Zelle steht, mittels VBA?

Gruss

Fab
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Finde Wort "Beispiel" mit VBA
09.10.2003 14:33:04
Felix
Hallo,

schau Dir mal die VBA-Funktion find an. (Hilfe)

Gruß
AW: Finde Wort "Beispiel" mit VBA
09.10.2003 14:41:21
Fab
Hallo Felix

Ich habe die Hilfe angeschaut, werde aber nicht schlau daraus. Das folgende Makro funktioniert jedenfalls nicht:

With ActiveSheet
.Find ("Beispiel")

End With

Gruss Fab
Anzeige
AW: Finde Wort "Beispiel" mit VBA
09.10.2003 14:47:53
GraFri
Hallo



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 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 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


     Code eingefügt mit Syntaxhighlighter 2.4


mfg, GraFri
Anzeige
AW: Finde Wort "Beispiel" mit VBA
09.10.2003 14:54:25
Fab
Hallo GraFri

Vielen Dank für deine Lösung. Sie ist relativ kompliziert, geht es nicht viel einfacher?

Gruss

Fab
AW: Finde Wort "Beispiel" mit VBA
09.10.2003 15:02:39
Carsten
Hallo Fab,

wenn's immer nur um das Wort "Beispiel" geht, dann so:


Sub suchen()
Cells.Find(what:="Beispiel").Activate
End Sub


Gruß
Carsten
Anzeige
AW: Finde Wort "Beispiel" mit VBA
09.10.2003 15:08:41
Fab
Hallo Carsten

Das ist die Lösung! Danke.

Fab
AW: Finde Wort "Beispiel" mit VBA
09.10.2003 15:09:06
Felix
Vorsicht,

die Find-Funktion merkt sich die Einstellungen der letzten Nutzung, egal ob per VBA oder manuell (Strg-F). Deshalb wäre es sicherer, die anderen Einstellungen auch vorzugeben:


Sub suchen()
Cells.Find(what:="Beispiel", lookin:=xlvalues, lookat:=xlpart).Activate
End Sub


Gruß, Felix
Anzeige
AW: Finde Wort "Beispiel" mit VBA
09.10.2003 15:20:50
Fab
Hallo Felix

Vielen Dank für die Präzisierung. Ich werde sie dazufügen.

Fab
;
Anzeige

Infobox / Tutorial

Wort "Beispiel" mit VBA finden


Schritt-für-Schritt-Anleitung

Um das Wort "Beispiel" in einer Excel-Tabelle mit VBA zu finden, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Kopiere den folgenden Code in das Modul:

    Sub suchen()
       Cells.Find(what:="Beispiel").Activate
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus:

    • Drücke ALT + F8, wähle suchen aus der Liste und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt"

    • Lösung: Stelle sicher, dass das Wort "Beispiel" tatsächlich in der Tabelle vorhanden ist. Wenn nicht, wird die .Find-Methode kein Objekt zurückgeben.
  • Fehler: "Das Makro konnte nicht gefunden werden"

    • Lösung: Überprüfe, ob du das Makro im richtigen Modul erstellt hast und dass es korrekt benannt ist.
  • Problem: Suchergebnisse werden nicht angezeigt

    • Lösung: Verwende die erweiterte Version der Find-Methode, um die Suchparameter zu spezifizieren, wie im nächsten Abschnitt beschrieben.

Alternative Methoden

Wenn du eine spezifischere Suche benötigst oder die Find-Funktion nicht zu verwenden ist, kannst du die folgenden Methoden ausprobieren:

  1. 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.

  2. Nutzung einer benutzerdefinierten Funktion:

    • Du kannst auch eine benutzerdefinierte Funktion erstellen, die die Suche durchführt und die Adresse der gefundenen Zelle zurückgibt.

Praktische Beispiele

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

Tipps für Profis

  • 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.


FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige