Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Laufzeitfehler 1004

Betrifft: VBA Laufzeitfehler 1004 von: Karl
Geschrieben am: 12.10.2020 09:52:10

Hallo,

Ich möchte den Zelleninhalt (string) mit dem Wert der Variable "listenwert" (string) absuchen und in einer Variable "resultat" darstellen. 10 Spalten weiter soll nur das Suchwort erscheinen.

Dafür benutze ich den Code:

zelleninhalt = Worksheets("Sheet1").Cells(y, x).Value
listenwert = Worksheets("Sheet2").Cells(1, 2).Value
resultat = Application.WorksheetFunction.Search(listenwert, zelleninhalt)

If Not listenwert = "#VALUE!" Or "#Value!" Then
Worksheets("Sheet1").Cells(y, x + 10).Value = Right(zelleninhalt, Len(zelleninhalt) - resultat)

Dabei bekomme ich jedoch die Fehlermeldung:
' Laufzeitfehler 1004: Die Search-Eigenschaft des WorksheetFunction Objektes kann nicht zugeordnet werden.'

Was hat die Fehlermeldung zu bedeuten?
Worin liegt mein Fehler?
Wie kann ich meine Idee dennoch umsetzen?

Gruß, Karl

Betrifft: AW: VBA Laufzeitfehler 1004
von: Dieter Klemke
Geschrieben am: 12.10.2020 10:47:47

Hallo Karl,

ohne Beispieldatei kann man natürlich nur raten.
Der genannte Fehler tritt z.B. dann auf, wenn zelleninhalt der leere String ist.

Viele Grüße
Dieter

Betrifft: AW: VBA Laufzeitfehler 1004
von: Karl
Geschrieben am: 12.10.2020 11:17:20

Hallo,

Danke für die Rückmeldung! Beim nächsten Mal führe ich eine Beispieldatei an ;).

Laut Recherchen ist die Ursache der Fehlermeldung die Funktion selbst: Application.WorksheetFunction.Find() unterbricht die ganze Prozedur bei einer Fehlermeldung.
Die Methode "InStr()" ist daher die bessere Wahl. Im Falle des Nicht-Findens gibt die Methode "0" aus.

Gruß, Karl

Betrifft: AW: VBA Laufzeitfehler 1004
von: Daniel
Geschrieben am: 12.10.2020 11:29:20

Richtig, instr ist innerhalb von VBA meistens die bessere Wahl.
Das WorkSheetFunction.Search (Suchen) ist nur dann erforderlich, wenn du beim Suchtext Jokerzeichen (? und *) verwendest.
Instr kann das meines Wissens nach nicht.

Gruß Daniel