Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Selection Find - Wenn nichts gefunden wurde...

Forumthread: Selection Find - Wenn nichts gefunden wurde...

Selection Find - Wenn nichts gefunden wurde...
04.09.2003 09:16:13
Rolf
Hallo Kollegen,

Nun, ich bin an einem Makro. Ein Teil daraus lautet:

z = ActiveCell
Range("J17:J65").Select
Selection.Find(What:=z, After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate

Dieser Teil funktioniert, indem er aus einem Bereich ein Namen sucht. Wenn er aber den Namen nicht findet, bricht er das Makro mit der Meldung "Objektvariable nicht deffiniert" ab. (Also z= Nicht deffiniert).

Frage: Kann ich den Abbruch mit einer schönen If then verpakung verhindern, so mit MsgBox "Name nicht gefunden"? Wie lautet der String für die Abfrage?


Danke für eure Antworten!

Rolf


Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selection Find - Wenn nichts gefunden wurde...
04.09.2003 09:21:29
junny
Hey Rolf,
ich denke so ~ müsst`s klappen

If what = <> z Then msgbox "Name nicht gefunden"
AW: Selection Find - Wenn nichts gefunden wurde...
04.09.2003 10:04:34
Rolf
Klappt leider noch nicht so, wie es soll!

Hast du oder jemand anderes noch eine andere Lösung?

Danke!

Rolf
AW: Selection Find - Wenn nichts gefunden wurde...
04.09.2003 10:04:30
BerndE
Hi Rolf,

ein bisschen umständlich, aber es scheint zu funzen:

If Not Selection.Find(What:=z, After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False) Is Nothing Then
Selection.Find(What:=z, After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Else
MsgBox ("Name nicht gefunden")
End If

Gruß
Bernd

www.bernds.page.de.vu
Anzeige
AW: Bernd ! Danke, funzelt! o.T.
04.09.2003 10:16:50
Rolf
.
;
Anzeige

Infobox / Tutorial

Verwendung der Selection.Find Methode in VBA


Schritt-für-Schritt-Anleitung

Um die Selection.Find Methode in VBA zu verwenden und dabei Fehler wie "Objektvariable nicht definiert" zu vermeiden, kannst Du folgendes Beispiel nutzen:

  1. Definiere die Variable: Setze z auf die Zelle, die Du suchen möchtest.

    z = ActiveCell
  2. Führe die Suche durch: Verwende die Selection.Find Methode, um nach z im angegebenen Bereich zu suchen.

    If Not Selection.Find(What:=z, After:=ActiveCell, LookIn:=xlFormulas, _
       LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
       MatchCase:=False) Is Nothing Then
       Selection.Find(What:=z).Activate
    Else
       MsgBox "Name nicht gefunden"
    End If
  3. Fehlerbehandlung: Wenn der gesuchte Name nicht gefunden wird, wird eine Nachricht angezeigt.


Häufige Fehler und Lösungen

  • Objektvariable nicht definiert: Dieser Fehler tritt auf, wenn Selection.Find nichts zurückgibt. Um dies zu vermeiden, stelle sicher, dass Du die Suche in einer If-Anweisung verpackst, wie im obigen Beispiel gezeigt.

  • Falscher Bereich: Vergewissere Dich, dass der Bereich (Range("J17:J65")) korrekt angegeben ist und die gesuchte Zelle tatsächlich innerhalb dieses Bereichs liegt.


Alternative Methoden

Wenn Du nicht die Selection.Find Methode verwenden möchtest, kannst Du eine Schleife verwenden, um die Zellen im gewünschten Bereich manuell zu durchsuchen:

Dim cell As Range
Dim found As Boolean
found = False

For Each cell In Range("J17:J65")
    If cell.Value = z Then
        cell.Select
        found = True
        Exit For
    End If
Next cell

If Not found Then
    MsgBox "Name nicht gefunden"
End If

Diese Methode bietet mehr Kontrolle, kann jedoch komplexer sein.


Praktische Beispiele

Hier ist ein vollständiges Beispiel, das die Selection.Find Methode in einer Prozedur verwendet:

Sub SucheNachNamen()
    Dim z As Variant
    z = ActiveCell.Value ' Der gesuchte Name

    If Not Selection.Find(What:=z, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False) Is Nothing Then
        Selection.Find(What:=z).Activate
    Else
        MsgBox "Name nicht gefunden"
    End If
End Sub

Dieses Makro sucht nach dem Namen, der in der aktiven Zelle steht, und zeigt eine Nachricht an, wenn der Name nicht gefunden wird.


Tipps für Profis

  • Achte darauf, die Option MatchCase zu verwenden, wenn die Groß-/Kleinschreibung eine Rolle spielt.
  • Nutze die After-Option, um die Suche ab einer bestimmten Zelle zu starten, was nützlich sein kann, wenn Du mehrfach suchen musst.
  • Experimentiere mit anderen Suchparametern wie LookIn und LookAt, um die Suche weiter anzupassen.

FAQ: Häufige Fragen

1. Wie kann ich die Selection.Find Methode für andere Bereiche verwenden?
Du kannst die Methode einfach anpassen, indem Du den gewünschten Bereich in der Range-Anweisung änderst.

2. Was passiert, wenn ich die LookIn-Option auf xlValues setze?
Mit xlValues wird nur nach den sichtbaren Werten in den Zellen gesucht, während xlFormulas auch die Formeln berücksichtigt.

3. Wie kann ich die Suche nach mehreren Kriterien durchführen?
Du kannst eine Schleife verwenden, um die Selection.Find Methode für verschiedene Suchbegriffe zu wiederholen oder die Bedingungen innerhalb der If-Anweisung kombinieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige