unzulässiger/nicht ausreichend definierter Ve

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

Betrifft: unzulässiger/nicht ausreichend definierter Ve
von: Peppi
Geschrieben am: 07.10.2003 20:31:07

Hallo,


ich habe mir eine Suchroutine gebastelt, aber bekomme da immer eine Fehlermeldung. Mit dem Code zwischen den Sternchen rufe ich eine Suchroutine auf und rufe dann mit 'call' die '


Private Sub Suchroutine' auf. Die soll dann für die weitere Suche sorgen. Allerdings bekomme ich immer die Fehlermeldung "unzulässiger oder nicht ausreichend definierter Verweis" Dabei ist '.FindNext' makiert.
Würde mich freuen, wenn mir jemand weiter helfen könnte.
Gruß
Peppi
*****************
'Alle Blätter durchlaufen
              For Each objBlatt In ActiveWorkbook.Worksheets
                  'Verwendeten Bereich jedes Blatts durchsuchen
                  With objBlatt.UsedRange
                      'Suchfunktion aufrufen
                      Set objZelle = .Find(What:=strSuchtext, LookIn:=xlValues)
                      'Wenn erster Treffer, dann...
                      'If 2
                      If Not objZelle Is Nothing Then
                          '... Fundstelle merken
                          strErsteFundstelle = objBlatt.Name & "!" & objZelle.Address
                          Call Suchkatalogblattanlegen(strSuchtext, strErsteFundstelle, objBlatt, objZelle)
                          Exit Sub
***************

Private Sub Suchroutine(strSuchtext As String, strErsteFundstelle As String, objBlatt As Worksheet, objZelle As Range)
    
   
    Dim objSuchKatalogblatt As Worksheet
    Dim intButton As Integer
    Dim objForm As UserForm
    
    Do
    'Blatt mit Fundstelle aktivieren
    objBlatt.Activate
    'Fundstelle markieren
    objZelle.Select
    'Anwender fragen, ob Suche fortgesetzt werden soll
    intButton = MsgBox("Weiter suchen?", vbQuestion + vbYesNo, APP_NAME)
    'Wenn Antwort nicht 'Ja' lautet, dann...
    'If 010
    If intButton <> vbYes Then
        'Fragen, ob das Suchkatalogblatt geöffnet werden soll
        intButton = MsgBox("Das Suchkatalogblatt öffnen?22", vbQuestion + vbYesNo, APP_NAME)
        'Wenn die Antwort nicht 'Ja' lautet, dann...
        'If 016
        If intButton <> vbYes Then
            'Infofenster mit "Suche beendet!" öffnen und...
            MsgBox "Suche beendet3!", vbInformation, APP_NAME
            '...Makro beenden
            Exit Sub
        'If 016
        Else
            'Suchkatalogblatt aktivieren
            objSuchKatalogblatt.Activate
            'Makro beenden
            Exit Sub
    'If 010
    End If
        'If 016
        End If
     
    'Nach nächstem Vorkommen suchen
    Set objZelle = .FindNext(objZelle)
    'Schleife wiederholen solange weitere Fundstellen auftauchen und erste Fundstelle noch nicht      erreicht
    Loop While Not objZelle Is Nothing And objBlatt.Name & "!" & objZelle.Address <>     strErsteFundstelle
End Sub

Bild


Betrifft: AW: unzulässiger/nicht ausreichend definierter Ve
von: Willie
Geschrieben am: 08.10.2003 07:40:15

Hallo Peppi versuchs mal damit das habe ich auch aus dem Forum...
Gruß Willie

Public

Sub suchen()
    Dim Zelle As Range, Suchbegriff As String, Adresse As String, zaehler As Integer
    Dim index As Integer, Feld() As String, Tabelle() As Integer, Zeile_Spalte() As String
    Suchbegriff = InputBox("Suchbegriff eingeben", "Eingabe")
    If Suchbegriff <> "" Then
        For index = 1 To Worksheets.Count
            With Sheets(index).Cells
                Set Zelle = .Find(What:=Trim(Suchbegriff), LookAt:=xlPart)
                If Not Zelle Is Nothing Then
                    Adresse = Zelle.Address
                    Do
                        zaehler = zaehler + 1
                        ReDim Preserve Feld(1 To zaehler)
                        ReDim Preserve Tabelle(1 To zaehler)
                        ReDim Preserve Zeile_Spalte(1 To zaehler)
                        Feld(zaehler) = Sheets(index).Name & " Spalte " & Zelle.Column & " Zeile " & Zelle.Row
                        Tabelle(zaehler) = index
                        Zeile_Spalte(zaehler) = Zelle.Address
                        Set Zelle = .FindNext(Zelle)
                    Loop While Not Zelle Is Nothing And Zelle.Address <> Adresse
                End If
            End With
        Next
        If zaehler > 0 Then
            If MsgBox(Suchbegriff & " wurde " & CStr(zaehler) & " mal gefunden." & vbNewLine & "Fundstellen anzeigen?", 68, "Information") = 7 Then Exit Sub
            Do
                For index = 1 To zaehler
                    Sheets(Tabelle(index)).Select
                    Range(Zeile_Spalte(index)).Select
                    ActiveWindow.ScrollColumn = Selection.Column
                    ActiveWindow.ScrollRow = Selection.Row
                    If zaehler = 1 Then Exit Sub
                    If index < zaehler Then
                        If MsgBox(CStr(index) & ". Fundstelle von " & CStr(zaehler) & ": " & Feld(index) & vbNewLine & "Weitere anzeigen?", 68, "Information") = 7 Then Exit Sub
                    Else
                        If MsgBox(CStr(index) & ". Fundstelle von " & CStr(zaehler) & ": " & Feld(index) & vbNewLine & "Nochmal anzeigen?", 68, "Information") = 7 Then Exit Do
                    End If
                Next
            Loop
        Else
            MsgBox Suchbegriff & " wurde nicht gefunden", 64, "Information"
        End If
    End If
End Sub



Bild


Betrifft: AW: unzulässiger/nicht ausreichend definierter Ve
von: Peppi
Geschrieben am: 08.10.2003 10:50:34

Hallo,

vielen Dank, ich werde es nachher auch mal damit versuchen.

Vielen Dank nochmal.

Gruß
Peppi


Bild


Betrifft: funktioniert leider nicht
von: Peppi
Geschrieben am: 08.10.2003 11:39:08

Hallo,

ich habe es mal versucht, ist ja fast so, wie ich es schon habe, aber leider funktioniert es nicht so wie ich es möchte. Ich bekomme immer noch die gleiche Fehlermeldung.
In der ersten Sub Hab ich ja folgendes stehen:

strErsteFundstelle = objBlatt.Name & "!" & objZelle.Address
Call Suchkatalogblattanlegen(strSuchtext, strErsteFundstelle, objBlatt, objZelle)

In der, die dann aufgerufen wird, also 'Suchkatalogblattanlegen':

Set objZelle = .FindNext(objZelle)
'Schleife wiederholen solange weitere Fundstellen auftauchen und erste nicht erreicht
Loop While Not objZelle Is Nothing And objBlatt.Name & "!" & objZelle.Address <> strErsteFundstelle

Bei dem FindNext bringt er dann die Fehlermeldung.
Würde mich freuen, wenn jemandem noch eine andere Lösung einfallen würde.

Gruß
Peppi


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Probleme mit VBA-Code"