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

Forumthread: was anderes wie LookAt:=xlPart?

was anderes wie LookAt:=xlPart?
11.02.2009 10:09:00
Edwin
Hallo,
ich habe vor längerer Zeit mit Hilfe dieses erstklassigen Forums einen sehr umfangreichen VBA-Code gebastelt.
Was VBA angeht, bin ich aber eine ziemliche Null.
Nun habe ich folgendes festgestellt:
Das Ergebnis einer Suche ist falsch.
Mit meinem VBA wird u.a. ein Sheet durchsucht. Die Suche soll lauten: entspricht "Name1", aber das Ergebnis bringt z.B. auch "Name10".
In dem VBA ist folgender Code (auszugsweise) und soweit ich es noch weiß, ist der für die Suche verantwortlich.
Und ich meine auch, dass "xlPart" mein Problem ist. Mit was muss ich "xlPart" ersetzen, damit auch wirklich nur "Name1" gefunden wird.
Dim rngSearch As Rang
Dim strSearch As String
Dim c As Range
Set c = rngSearch.Find(strSearch, LookAt:=xlPart)
Ich weiß nicht, ob es von Bedeutung ist, aber es gibt viele Ergebnisse mit "Name1". Aber das ist mit einer Schleife geregelt.
Danke!
Edwin
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
xlWhole oT
11.02.2009 10:21:00
Bertram
AW: was anderes wie LookAt:=xlPart?
11.02.2009 10:21:00
Luschi
Hallo Edwin,
warum schaust Du nicht in die Vba-Hilfe, dann würdest Du das hier lesen:
LookAt Optional Variant. Kann eine der folgenden XlLookAt-Konstanten sein: xlWhole or xlPart.
xlWhole --> Suche nach gesamten Zellinhalt
Gruß von Luschi
aus klein-Paris
xlWhole anstatt xlPart oT.
11.02.2009 10:26:00
Tino
Anzeige
kleine Anmerkung
11.02.2009 10:35:00
Tino
Hallo,
ich habe mir angewöhnt, bei der Suchfunktion alle Parameter anzugeben.
(nur After:=… lass ich weg)
Also ob in Werten gesucht werden soll.
Ob der gesamte Inhalt verglichen werden soll.
usw.
Gibt man nicht alle Parameter an, wird die Einstellung der letzten Suche verwendet,
dies kann schnell falsche Ergebnisse bringen.
Also Zeichne Dir die Suche mit dem Rekorder auf,
räume den entstandenen Code etwas auf und verwende diesen.
Die Codezeile wird zwar etwas länger, dass ist aber Egal.
Gruß Tino
Anzeige
AW: kleine Anmerkung
11.02.2009 10:46:00
Ramses
Hallo Tino
Wenn du mit FIND in einer Scheifensuche mehrere vorkommen in der Tabelle suchen willst (z.B. in welchen Zellen kommt "x" vor und alle Adressen auflisten), dann kommst du um
(nur After:=… lass ich weg)
leider nicht rum, sonst fängt er mit jedem Suchlauf wieder von vorne an :-)
Gruss Rainer
Anzeige
AW: kleine Anmerkung
11.02.2009 10:49:00
Tino
Hallo,
es gibt auch Findnext...
Gruß Tino
Stimmt, ... ich geh nochmal ins Bett o.w.T. :-)
11.02.2009 11:48:00
Ramses
...
ich wünsche eine gute Nacht ;-) oT.
11.02.2009 11:51:00
Tino
Anzeige
heir noch ein Beispiel
11.02.2009 11:06:00
Tino
Hallo,
hier noch ein Beispiel dazu.
Sub SucheAlle()
Dim rZelle As Range
Dim lCount As Long
'Suche in Spalte 1 alles Zellen die mit Name1 beginnen 
lCount = Application.WorksheetFunction.CountIf(Columns(1), "Name1*")

For lCount = 1 To lCount
 If lCount = 1 Then
  Set rZelle = Columns(1).Find("Name1*", , xlValues, 1, 1, 1, True, False)
 Else
  Set rZelle = Columns(1).FindNext(rZelle)
 End If
 Debug.Print rZelle.Address
Next lCount

End Sub


Gruß Tino

Anzeige
AW: was anderes wie LookAt:=xlPart?
11.02.2009 14:28:00
Edwin
Hallo,
erst mal Entschuldigung, dass ich mich den ganzen morgen nicht mehr gemeldet habe. Ich musste dringend weg und ständig will jemand was von mir. Stress, lass nach!
Mit xlWhole kamen immer noch "Name1, Name10, Name18 ..."
Bis ich bemerkt habe, dass im Suchbegriff noch ein "& *" drin war.
Jetzt habe ich das Sternchen entfernt und es kommt nur noch "Name1". Jippieh!
Danke!
Warum finde ich eigentlich in der VBA-Hilfe nix, wenn xlWhole xlPart usw eingebe?
Bin ich ein SuperDAU?
Gruß
Edwin
Anzeige
AW: was anderes wie LookAt:=xlPart?
11.02.2009 15:41:00
Bertram
Hallo Edwin,

Warum finde ich eigentlich in der VBA-Hilfe nix, wenn xlWhole xlPart usw eingebe?
Bin ich ein SuperDAU?


Letzteres kann ich nicht beantworten:-), aber soweit ich weiß kann man nur nach Schlüsselworten suchen, aber nicht nach Parametern und Excelkonstanten. In deinem Fall mußt du also nach "Find" suchen.
Gruß
Bertram

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Alternativen zu LookAt:=xlPart in VBA


Schritt-für-Schritt-Anleitung

Um die Suche in Excel VBA so anzupassen, dass nur exakte Übereinstimmungen gefunden werden, kannst du den Parameter LookAt beim Find-Befehl ändern. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne deinen VBA-Editor in Excel.
  2. Suche die Stelle in deinem Code, wo du die Find-Methode verwendest. Der aktuelle Code könnte wie folgt aussehen:
    Set c = rngSearch.Find(strSearch, LookAt:=xlPart)
  3. Ändere den LookAt-Parameter zu xlWhole, um nur vollständige Übereinstimmungen zu finden:
    Set c = rngSearch.Find(strSearch, LookAt:=xlWhole)
  4. Teste deinen Code, um sicherzustellen, dass nur die gewünschten Ergebnisse angezeigt werden.

Häufige Fehler und Lösungen

Ein häufiges Problem ist, dass trotz der Verwendung von xlWhole unerwartete Ergebnisse zurückgegeben werden. Hier sind einige mögliche Ursachen und Lösungen:

  • Unerwartete Zeichen im Suchbegriff: Stelle sicher, dass keine zusätzlichen Zeichen wie & oder * im Suchbegriff enthalten sind. Diese können dazu führen, dass xlWhole nicht korrekt funktioniert.
  • Verwendung von xlPart: Wenn dein Code xlPart verwendet, wirst du auch Teilübereinstimmungen erhalten. Überprüfe, ob du wirklich xlWhole verwenden möchtest.
  • Parameter nicht vollständig angegeben: Achte darauf, dass du alle Parameter in der Find-Methode angibst, um falsche Ergebnisse zu vermeiden.

Alternative Methoden

Es gibt verschiedene Methoden, um nach Werten in Excel zu suchen. Hier sind einige Alternativen zur Verwendung von LookAt:

  • CountIf-Funktion: Wenn du nur zählen möchtest, wie oft ein bestimmter Wert vorkommt, kannst du die CountIf-Funktion verwenden:
    Dim count As Long
    count = Application.WorksheetFunction.CountIf(Range("A:A"), "Name1")
  • FindNext-Methode: Verwende die FindNext-Methode, um alle Vorkommen eines Wertes zu finden. Dies kann hilfreich sein, wenn du mehrere Übereinstimmungen in einer Schleife suchen möchtest.

Praktische Beispiele

Hier ist ein Beispiel, wie du die Find-Methode mit xlWhole nutzen kannst, um nur exakte Übereinstimmungen zu finden:

Sub SucheExakt()
    Dim rngSearch As Range
    Dim strSearch As String
    Dim c As Range

    Set rngSearch = ThisWorkbook.Sheets("Tabelle1").Range("A1:A100")
    strSearch = "Name1"

    Set c = rngSearch.Find(strSearch, LookAt:=xlWhole)

    If Not c Is Nothing Then
        Debug.Print "Gefunden in: " & c.Address
    Else
        Debug.Print "Kein Ergebnis gefunden."
    End If
End Sub

Tipps für Profis

  • Verwendung des Rekorders: Zeichne deine VBA-Skripte mit dem Makro-Rekorder auf, um die genauen Parameter und Einstellungen zu sehen, die du verwenden solltest.
  • Alle Parameter angeben: Gewöhne dir an, alle Parameter bei der Find-Methode anzugeben (außer After), um konsistente Ergebnisse zu erhalten.
  • VBA-Hilfe nutzen: Wenn du nach spezifischen Funktionen suchst, wie vba find lookat, nutze Schlüsselwörter anstelle von Parametern, um bessere Suchergebnisse in der VBA-Hilfe zu erhalten.

FAQ: Häufige Fragen

1. Warum finde ich nichts, wenn ich nach xlWhole suche? Die VBA-Hilfe erlaubt es dir nicht, nach Parametern wie xlWhole zu suchen. Suche stattdessen nach allgemeinen Begriffen wie „Find“.

2. Was ist der Unterschied zwischen xlPart und xlWhole? xlPart sucht nach Teilübereinstimmungen in Zellen, während xlWhole nur nach vollständigen Übereinstimmungen des Zellinhalts sucht.

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