Clever-Excel-Forum

Normale Version: Verständnisfrage
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich hab mal wieder eine Frage.
Ich berechne in einer xlsm Datei (xl 2010) mit

Code:
           lz_test = wb1.Worksheets("test").Cells(Rows.Count, 1).End(xlUp).Row
               If lz_test = 1 Then
                   lz_test = 2
               Else
           lz_test = lz_test + 1
               End If
die letzte beschriebenZeile +1 zum einfügen von weitren Daten. Klappt auch super.
Nur wenn ich eine 2. Datei (im XL 97 Format - die Datei muss offen sein da aus dieser die Daten für den Import kommen) offen habe steigt der Code bei Zeilen über 65535  aus, genauer er gibt als Ergebnis 1 aus.
Wie kann ich das lösen?

LG Matty
Hallo,

ich vermute mal, das liegt daran, dass es in Excel 97 noch 65535 Zeilen gab, während es in Excel 2010 einige Zeilen mehr gab. Mit Rows.Count verweist du aber auf die gerade active Datei und nicht auf die Datei wb1 - du musst also den Verweis komplett setzen, z.B. mithilfe eines With-Rahmens.
Hallo,

hmmm ich dachte das ich das mit wb1.xxxxxxxx anspreche? wb1 ist dabei natürlich die "neue" xl2010 Datei.
Wie muss denn so ein with-Rahmen aussehen?

LG Matty
Hallöchen,

z.B. so
… wb1.Worksheets("test").Cells(wb1.Worksheets("test").Rows.Count, 1).End(xlUp).Row

oder so

With wb1.Worksheets("test")
… .Cells(.Rows.Count, 1).End(xlUp).Row
End With

Beachte die Punkte vor den zugehörigen Bereichsangaben.

Du musst aber beachten, dass Du dir die Umklammerungen nicht zerwürfelst, also z.B.
With
If
End With
End If

wäre falsch, korrekt wäre

With
If
End If
End With
Danke euch beiden, klappt Super
Hallo Matty,

wofür die If-Verzweigung? Ist 1+1 nicht 2?
die letzte Zeile:


Code:
msgbox wb1.sheets("test").Cells(Rows.Count, 1).End(xlUp).address

und

Code:
msgbox wb2.sheets("test").Cells(Rows.Count, 1).End(xlUp).address

Was Mathias behauptet hat stimmt nicht: rows.count ist fix für jede Excelversion und nicht relatiert zu einem Arbeitsblatt.
Ergo .rows.count ist unsinn.
Du irrst, snb!
Modul Modul2
Option Explicit 
 
Sub RPP() 
Dim WB1 As Workbook, WB2 As Workbook 
Set WB1 = Workbooks("Schachbrett.xls") 
Set WB2 = Workbooks("Zeichentabelle.xlsm") 
WB2.Activate 
With WB1.Worksheets("Tabelle1") 
  Debug.Print Rows.Count 
  Debug.Print .Rows.Count 
End With 
End Sub 

ergibt im Direktfenster
Code:
1048576
65536

Gruß Ralf
Hallöchen,

ich schließe mich Ralf an. Je nach gerade aktivem Datenblatt xls oder xlsx wird mir in 2016 die Zeilenzahl der Datei angezeigt und nicht nur die in 2016 mögliche maximale Anzahl.