Laufzeitfehler 1004 bei find

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
InputBox MsgBox


Excel-Version: Ab 8.0
nach unten

Betrifft: Laufzeitfehler 1004 bei find
von: Hagen
Geschrieben am: 13.05.2002 - 11:01:47

Hallo,

bei Verwendung der Range-Methode Find in folgendem Code spuckt Excel 97 mir folgende Fehlermeldung aus:

"Laufzeitfehler '1004': Die Find-Eigenschaft des Range-Objektes kann nicht zugeordnet werden.

Sub soundso(ByVal reftab As Excel.Worksheet)
Dim c As Range
...
Set c = reftab.Columns(1).Find("text", LookAt:=xlWhole, MatchCase:=True)
...
End Sub

Unter Excel 2000 läuft dies problemlos, dafür taucht der Fehler aber unter einer ähnlichen Situation auf.

Sub sowieso()
Dim wb As Workbook
Dim sh As Worksheet
Dim c As Range
Set wb = Workbooks.Open("datei.xls", IgnoreReadOnlyRecommended:=True)
Set sh = wb.Worksheets(1)
' bis hierhin klappt alles
Set c = sh.Columns(3).Find("text", LookAt:=xlWhole, MatchCase:=True)
...
End Sub

Einziger Unterschied ist hier, wie das Worksheet-Objekt zugewiesen wird.

Was ist der Fehler, oder ist dies ein bekannter Bug?
Achso, ich bin auf die Find-Methode angewiesen, da ich nicht weiss, wieviele Zeilen die zu durchsuchende Spalte hat. Bei For Each wird ja leider alles durchsucht, auch wenn der Arbeitsbereich schon überschritten ist.

Gruß,
Hagen

nach oben   nach unten

Re: Laufzeitfehler 1004 bei find
von: Hubert
Geschrieben am: 13.05.2002 - 11:08:45


Versuch's doch mal damit: Das löst das Problem nicht zu wissen wie viele Zeilen und Spalten durchsucht werden sollen und lässt dich flexibler arbeiten als mit find....

For z = 1 To worksheet(1).UsedRange.Rows.Count
For s = 1 To TB.UsedRange.Rows.Count
if CStr(TB.Cells(z, s).Text) = suchstring then
machwas
endif
Next s
next z


Gruß Hubert

nach oben   nach unten

Re: Laufzeitfehler 1004 bei find
von: Hubert
Geschrieben am: 13.05.2002 - 11:11:54

Oder so:

Public Function sucheintabellenblatt() As Range 'Tabellenbereich ohne Laufzeitfehler durchsuchen _

Dim gZelle As Range, sBegriff$
Range("A1").Select

sBegriff = InputBox("Bitte Suchbegriff eingeben:", Application.UserName)
If sBegriff = "" Then Exit Function

Set gZelle = ActiveSheet.Columns("a:F").Find(sBegriff)

If gZelle Is Nothing Then
Beep
MsgBox "Suchbegriff nicht gefunden!", , Application.UserName
Exit Function
End If

gZelle.Select
MsgBox gZelle.Address(False, False)
gZelle.Offset(1).Select

While ActiveCell.Address <> gZelle.Address

Cells.FindNext(after:=ActiveCell).Activate
If ActiveCell.Address = gZelle.Address Then Exit Function
MsgBox ActiveCell.Address(False, False)
Wend


End Function

nach oben   nach unten

Re: Laufzeitfehler 1004 bei find
von: Hagen
Geschrieben am: 13.05.2002 - 11:28:28

Hallo Hubert,

danke erstmal. UsedRange ist ne gute Sache :-) Das löst mein Problem.
Aber woran liegt's eigentlich, dass man diesen Laufzeitfehler bekommt?

Gruß,
Hagen

nach oben   nach unten

Re: Laufzeitfehler 1004 bei find
von: Hubert
Geschrieben am: 13.05.2002 - 11:30:31

Hallo Hagen,

soweit ich das seinerzeit verstanden hatte (ich hatte das gleiche Problem), steigt find aus wenn es nichts findet (vielleicht als "Eselsbrücke": sonst würde der befehl ja search heißen ;-))

Gruß Hubert

nach oben   nach unten

Re: Laufzeitfehler 1004 bei find
von: Hubert
Geschrieben am: 13.05.2002 - 11:30:38

Hallo Hagen,

soweit ich das seinerzeit verstanden hatte (ich hatte das gleiche Problem), steigt find aus wenn es nichts findet (vielleicht als "Eselsbrücke": sonst würde der befehl ja search heißen ;-))

Gruß Hubert

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler 1004 bei find"