Fehler beim automatischen Ausführen (manuelle klappt es)

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von petaod.

    Fehler beim automatischen Ausführen (manuelle klappt es)

    Hi, bei folgendem Code tritt das Problem auf, dass bei manuellem durchführen alles klappt, beim automatischen durchführen durch ansprechen als unter Prozedur jedoch immer der Laufzeitfehler '91' (Objektvariable oder With. Blockvariable nicht festgelegt...der Debugger zeigt diese Zeile an: Loop While Not varFind Is Nothing And varFind.Address <> strFindFirst
    Hat jemand eine Ahnung, woran das liegen könnte?


    Sub Button()
    Import
    End Sub
    Sub Import()

    'Clear Worksheet
    Worksheets("Tabelle1").Select
    Cells.Select
    Selection.clear
    Range("A1").Select

    'Text Datei einfügen (in Tabelle 2, da in Tabelle 1 andere Darstellung entsteht....)
    Z = Sheets(2).UsedRange.Rows.Count

    Open Application.GetOpenFilename(Textfile, txt) For Input As #1
    Do While Not EOF(1)
    Line Input #1, temp
    Sheets(2).Cells(Z, 1) = Replace(temp, vbTab, ";")
    Z = Z + 1
    Loop
    Close #1

    For j = 1 To Z
    Text = Split(Cells(j, 1), ";")
    For i = 0 To UBound(Text)
    Cells(j, i + 1) = Text(i)
    Next
    Next



    weiter:

    group_suchen
    wenn
    End Sub


    Public Sub group_suchen()
    Dim rngAct As Range
    Dim strFindFirst As String
    Dim intLoopCount As Integer
    Dim varFind As Variant
    'Begrenzung des zu durchsuchenden Bereichs
    'auf Spalte A in Tabelle 2
    With Worksheets("Tabelle2").Columns(1)
    '1. Übereinstimmung finden
    Set varFind = .Find(What:="group=", after:=Range("A1"), _
    LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, _
    SearchDirection:=xlNext, MatchCase:=False)
    If Not varFind Is Nothing Then
    '1. Zelle für das Beenden der Do-Loop-Schleife merken
    strFindFirst = varFind.Address
    Do
    i = i + 1
    'Zelle mit Suchkriterium in Tabelle2 an die gleiche
    'Position kopieren.
    Range(varFind.Address).Copy _
    Destination:=Sheets("Tabelle2").Range(varFind.Address)

    'herausgefilterten Wert um den Suchindex kürzen
    test = varFind
    Cells(i, 26) = test
    Dim Text As String
    Text = Cells(i, 26)
    Ergebnis = Mid(Text, InStr(1, Text, "=") + 1)
    Cells(1 + i, 3) = Ergebnis
    'nächste Zelle suchen
    Set varFind = .FindNext(varFind)
    'Schleife ausführen, solange das Suchkriterium gefunden
    'wird und bis letztendlich wieder die 1. Zelle erreicht ist
    Loop While Not varFind Is Nothing And varFind.Address <> strFindFirst
    End If
    End With
    End Sub
    Sub wenn()
    Dim y As Integer
    Dim r As Integer
    Dim aWerte As Variant
    'Zeilen Abfragen (nur 500 da nicht mehr Einträge in Text File)
    For r = 1 To 500
    'Abfrage um Zellen ohne Semikolon zu überspringen
    y = 0
    If Cells(r, 3) Like "*;*" Then
    y = y + 1

    'Werte einzeln herauskopieren
    Dim a As Variant
    Dim i As Integer
    i = 1
    Do

    For Each a In Split(Range("C1:C500").Cells(i, 1).Value, ";")
    Cells(Rows.Count, 2).End(xlUp).Offset(1).Value = a
    Next

    i = i + 1
    Loop Until i = 500

    End If

    Next r

    End Sub




    Grüße ein verzweifelter JoBa ;(

    JaBa schrieb:

    Loop While Not varFind Is Nothing And varFind.Address <> strFindFirst
    And prüft immer beide Bedingungen, auch wenn die erste erfüllt ist.
    Und varFind.Address läuft ins Leere, wenn varFind Nothing ist.
    Es erschliesst sich mir zwar nicht auf Anhieb, warum hier varFind plötzlich Nothing ist.
    Aber so wie du den Code formatiert hast ist das auch nicht so leicht ersichtlich.
    Du musst halt debuggen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --