Ich habe folgenden Code "gebastelt":
Sub Filtern_Linien_No()
Tabellenblatt = usrFiltern_Tabelle.cboTabellenblatt_Linien_No.Value
Spalte_Nutzlänge = Worksheets(Tabellenblatt).Rows(1).Find("Perronnutzlänge", LookAt:=xlWhole). _
Column
Spalte_Linie_No = Worksheets(Tabellenblatt).Rows(1).Find("Linie-No", LookAt:=xlWhole).Column
intLastColumn = Worksheets(Tabellenblatt).Cells(1, Columns.Count).End(xlToLeft).Column
intLastRow = Worksheets(Tabellenblatt).Cells(Rows.Count, Spalte_Nutzlänge).End(xlUp).Row
Linie_No = usrFiltern_Tabelle.cboLinien_No.Value
Unload usrFiltern_Tabelle
usrMaster_Warten.Show
Application.Wait (Now + TimeValue("00:00:01"))
GetMoreSpeed True
With Worksheets(Tabellenblatt)
Set rng = .Columns(Spalte_Linie_No).Find(Linie_No, LookIn:=xlValues, LookAt:=xlWhole)
If Not rng Is Nothing Then
firstAddress = rng.Address
Zeile = rng.Row
ZeileEnd = IIf(IsEmpty(.Cells(Zeile + 1, 1)), IIf(IsEmpty(.Cells(.Cells(Zeile, 1).End( _
xlDown).Row - 1, Spalte_Nutzlänge)), .Cells(.Cells(Zeile, 1).End(xlDown).Row, Spalte_Nutzlänge).End(xlUp).Row, .Cells(Zeile, 1).End(xlDown).Row - 1), Zeile)
'--- bestimmt letzte Zeile Tabelle zum Einfügen
intLastRowPaste = Worksheets(2).Cells(Rows.Count, Spalte_Nutzlänge).End(xlUp).Row + 1
'--- Kopierbereich
Set Kopieren = .Range(.Cells(Zeile, 1), .Cells(ZeileEnd, intLastColumn))
'--- Zielbereich
Set Ziel = Worksheets(2).Cells(intLastRowPaste, 1)
Kopieren.Copy Ziel
Do
Set rng = .Columns(Spalte_Linie_No).FindNext(rng)
Zeile = rng.Row
If rng.Address = firstAddress Then Exit Do
ZeileEnd = IIf(IsEmpty(.Cells(Zeile + 1, 1)), IIf(IsEmpty(.Cells(.Cells(Zeile, 1). _
End(xlDown).Row - 1, Spalte_Nutzlänge)), .Cells(.Cells(Zeile, 1).End(xlDown).Row, Spalte_Nutzlänge).End(xlUp).Row, .Cells(Zeile, 1).End(xlDown).Row - 1), Zeile)
'--- bestimmt letzte Zeile Tabelle zum Einfügen
intLastRowPaste = Worksheets(2).Cells(Rows.Count, Spalte_Nutzlänge).End(xlUp).Row + _
1
'--- Kopierbereich
Set Kopieren = .Range(.Cells(Zeile, 1), .Cells(ZeileEnd, intLastColumn))
'--- Zielbereich
Set Ziel = Worksheets(2).Cells(intLastRowPaste, 1)
Kopieren.Copy Ziel
Loop
End If
End With
End Sub
Beim der 1. Ausführung des Codes findet es nichts, dh. das 1. rng ist Nothing und geht zu End if und bei jeder weiteren Ausführung wird bei "Spalte_Linie_No" die Fehlermeldung "Objektvariable oder With-Blockvariable nicht festgelegt" erzeugt. Der Variable habe ich mit Public das Format Byte zugewiesen. Ich vermute dass die Find-Methode "With Workscheets(Tabellenblatt) ...... Probleme bereitet, weil ähnliche Code ohne diese Find-Methode funktionieren. Ich weiss aber nicht, was dieses Verhalten auslöst. Vermutlich gibt es für einen Excel-Spezialisten eine Erklärung. Was ist hier unlogisch?Vielen Dank
Gregor