So, habs mal mit Excel getestet.
Deine Version um die letzte Zeile zu ermitteln ist Schrott. Ok, am Ende hätte noch ein .Row angefügt werden müssen. Aber auch dann, gab sie bei einem leeren Sheet 1 heraus. Dabei sollte es 0 sein.
Deine Version um die letzte Zeile zu ermitteln ist Schrott. Ok, am Ende hätte noch ein .Row angefügt werden müssen. Aber auch dann, gab sie bei einem leeren Sheet 1 heraus. Dabei sollte es 0 sein.
Visual Basic:
Function test()
Dim wb As Workbook
Dim wsSource As Worksheet
Dim wsTarget As Worksheet
Dim nextTargetRow As Long
Set wb = ThisWorkbook
Set wsSource = wb.Worksheets("WS_A")
Set wsTarget = wb.Worksheets("WS_B")
nextTargetRow = xlsGetLastRow(wsTarget) + 1
wsTarget.Cells(nextTargetRow, 1).Value = wsSource.Range("A33").Value
wsTarget.Cells(nextTargetRow, 4).Value = wsSource.Range("D33")
wsTarget.Cells(nextTargetRow, 5).Value = wsSource.Range("E33")
End Function
'/**
' * ermitteln der letzten gefüllten Zeile eines Worksheets
' * Die Funktion Sheet.Cells.SpecialCells(xlCellTypeLastCell) liefert auch instanzierte Zeilen ohne Inhalt
' * http://wiki.yaslaw.info/wikka/vbaExcelGetLastRowCol
' * @param Worksheet Eine Referenz auf das Worksheet
' * @return Long Zeilenindex der letzten Zeile mit Inhalt
' */
Public Function xlsGetLastRow(ByRef Sheet As Excel.Worksheet) As Long
Dim r As Variant
xlsGetLastRow = Sheet.Cells.SpecialCells(xlCellTypeLastCell).row
For r = xlsGetLastRow To 1 Step -1
If Sheet.Application.WorksheetFunction.CountA(Sheet.rows(r)) = 0 Then
xlsGetLastRow = r - 1
Else
Exit For
End If
Next r
End Function