Hi,
in meinem Code setze ich
wks.Cells(wks.Rows.Count, "A").End(xlUp).Offset(1)
ein, um die letzte Zeile zu ermitteln und darunter Daten zu schreiben.
Obwohl das Tabellenblatt nur 2 Zeilen hat, sehe ich im Debugger, dass die Eigenschfaft Row den Wert 5 hat. Dementsprechend wirdin Zeile 6, statt in Zeile 3 eingefügt.
Ich bin so ratlos. Wie kann das sein? wks bezieht sich auf die richtige Tabelle.
Wenn ich den Debugger vor dieser Stelle anhalte und in der Tabelle in Spalte "A" einmal alles ab der dritten Zeile markiere und Entfernen drücke, dann bekomme ich dieses Problem nicht.
Das Tabellenblatt wird zuvor vom Makro erstellt und die ersten beiden Zeilen eingefügt. Dann folgt diese Verarbeitung:
Dim Spalte As Integer
Dim SpalteEnd As Integer
With ActiveSheet
SpalteEnd = .UsedRange.Columns.Count
For Spalte = SpalteEnd To 1 Step -1
If .Cells(1, Spalte).Value = "" Then
.Columns(Spalte).Delete
End If
Next Spalte
End With
Dim x&, j&
j = 1
For x = 2 To 102 Step 1
Cells(2, j).Value = Cells(1, x).Value
Columns(x).Delete
j = j + 1
Next
Anschließend, aus einer anderen Sub heraus, der Aufruf der Funktion, in der es zum Fehler kommt:
Dim wks As Excel.Worksheet
If WksMatch(ActiveSheet, ActiveWorkbook, wks) Then
'Und schließlich die Stelle, wo die letzte Zeile falsch belegt wird:
Function WksMatch(Optional ByVal Source As Excel.Worksheet, Optional ByVal CompareWith As Excel.Workbook, Optional ByRef Match As Excel.Worksheet) As Boolean
If Source Is Nothing Then Set Source = ActiveSheet
If CompareWith Is Nothing Then Set CompareWith = ActiveWorkbook
Dim wks As Excel.Worksheet
Dim i As Long
For Each wks In CompareWith.Worksheets
If Not wks Is Source Then
If WksCompare(Source, wks, 1) Then
Source.Rows(2).Copy wks.Cells(wks.Rows.Count, "A").End(xlUp).Offset(1)
Vielen Dank im Voraus
Grüße
Tobi
|