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
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