Suche dringen nach einer Erklärung
Gregor
Ich habe in einer Datei viele umfangreiche Makros. Ua. eruiere ich in vielen Makros Spalten-No, zB. mit:
Spalte_Nutzlänge = Worksheets("Tabelle1").Rows(1).Find("Nutzlänge", LookAt:=xlWhole).Column
Das funktioniert bestens, auch wenn die gesuchte Spalte mit dem Code "Columns("C:G").Hidden = True" ausgeblendet ist. Ich habe nun untenstehendes neues Makro geschrieben. Das funktiniert nur, wenn die Spalten eingeblendet sind, ansonsten erhalte ich die Meldung "Objektvariable oder With-Blockvariable nicht festgelegt". Schlimmer noch, nachdem ich dieses Makro gestartet habe, erscheint diese Fehlermeldung auch bei allen anderen Makros, sobald der Code Spalten-No eruieren aktiv wird und die gesuchte Spalte ausgeblendet ist. Bei eingeblendeten Spalten funktioniert es, aufgrund der vielen Spalten sind jedoch die Meisten ausgeblendet. Woran kann das liegen, ich finde keine Erklärung und somit auch keine Lösung. Die Variablen sind selbstverständlich zugewiesen.
Sub Test ()
Spalte_Nutzlänge = Worksheets(Tabellenblatt).Rows(1).Find("Nutzlänge", LookAt:=xlWhole).Column
Spalte_Kt = Worksheets(Tabellenblatt).Rows(1).Find("Kant", LookAt:=xlWhole).Column
With Worksheets(Tabellenblatt)
Set rng = .Columns(Spalte_Kt).Find(Kant, 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(Blattname).Cells(Rows.Count, Spalte_Nutzlänge).End(xlUp). _
Row + 1
'--- Kopieren
.Range(.Cells(Zeile, 1), .Cells(ZeileEnd, intLastColumn)).Copy Worksheets(Blattname). _
Cells(intLastRowPaste, 1)
Do
Set rng = .Columns(Spalte_Kanton).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(Blattname).Cells(Rows.Count, Spalte_Nutzlänge).End( _
xlUp).Row + 1
'--- Kopieren
.Range(.Cells(Zeile, 1), .Cells(ZeileEnd, intLastColumn)).Copy Worksheets(Blattname) _
.Cells(intLastRowPaste, 1)
Loop
End If
End With
End Sub
Wo liegt das Über dieser Ursache, ich bin am Verzweifeln und für eine Hilfe sehr dankbar.Gregor