Excel - Versionsproblem

Hallo Leute!

Folgendes Problemchen:
Ich habe einen Button in einer Exceltabelle mit folgendem Code belegt:

Private Sub CommandButton1_Click()

Dim rngFind As Range

Set rngFind = ActiveSheet.Cells.Find(what:=Tabelle1.eingabe, lookat:=xlPart, LookIn:=xlValues)

If Not rngFind Is Nothing Then
Application.Goto rngFind, Scroll:=True
Else
Beep
MsgBox „Kein Suchbegriff gefunden!“
Exit Sub
End If

End Sub

Dieser soll den in das Textfeld eingegebenen Text in der Tabelle suchen und markieren. Tut er auch, aber nur mit Excel 2002 und Excel 2000. Unter Excel 97 bekomme ich folgende Fehlermeldung:

Die Find-Eigenschaft des Range-Objektes kann nicht zugeordnet werden.

Hat jemand von Euch eine Ahnung, wie ich das Problem lösen könnte???

Besten Dank, Gruß aus OÖ

Keine Ahnung, aber …
Guck doch mal in die VBA-Hilfe von Excel 97, ob Du da was vergleichbares findest wie das „Find“.

Kristian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

einige Lösungsansätze

Private Sub CommandButton1_Click()
Dim rngFind As Range
Set rngFind = ActiveSheet.Cells.Find(what:=Tabelle1.eingabe,
lookat:=xlPart, LookIn:=xlValues)
If Not rngFind Is Nothing Then
Application.Goto rngFind, Scroll:=True
Else
Beep
MsgBox „Kein Suchbegriff gefunden!“
Exit Sub
End If
End Sub
Dieser soll den in das Textfeld eingegebenen Text in der
Tabelle suchen und markieren. Tut er auch, aber nur mit Excel
2002 und Excel 2000. Unter Excel 97 bekomme ich folgende
Fehlermeldung:
Die Find-Eigenschaft des Range-Objektes kann nicht zugeordnet
werden.

Hallo Alfred,
ich hab kein 97 aber habe mal gegoogelt, vielleicht nützt dir das Folgende, es geht dort um die gleiche Fehlermeldung bei find und xl97:
http://groups.google.de/groups?num=50&hl=de&ie=UTF-8…
Wenn nicht kannst du ja den workaround benutzen der unten im Code steht. (Die reinkopierte Beitragsfolge ist auch irgendqwo aus dem Netz gefischt)
Gruß
Reinhard
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

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

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

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

Hallo Hubert,

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

Gruß,
Hagen

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 :wink:)
Gruß Hubert