Hi faten,
hier ist irgendetwas durcheinander.
Erstmal gibt es allgemein zwei Möglichkeiten, die erste letzte Zelle in einer Spalte zu finden:
1) von oben nach unten suchen (entspricht STRG + Pfeil-Taste-nach-unten)
1 2 3 4 5 6 7 8 | Dim rngCell As Excel.Range
With Worksheets( "Tabelle1" ).Range( "A1" )
Set rngCell = . End (xlDown)
End With
rngCell. Select
|
Hier gibts jedoch das Problem, wenn in der Zelle darunter nichts drin steht, dann springt man in die letzte Zeile vom Tabellenblatt (= größt möglicher Zeilenindex).
Das kann man so abfangen:
1 2 3 4 5 6 7 8 9 10 11 12 | Dim rngCell As Excel.Range
With Worksheets( "Tabelle1" ).Range( "A1" )
If .Cells(1).Offset(1).Value <> "" Then
Set rngCell = . End (xlDown)
Else
Set rngCell = .Cells(1)
End If
End With
rngCell. Select
|
2) von unten nach oben suchen (entspricht STRG + Pfeil-Taste-nach-oben)
1 2 3 4 5 6 7 8 | Dim rngCell As Excel.Range
With Worksheets( "Tabelle1" )
Set rngCell = .Cells(.Rows.Count, "A" ). End (xlUp)
End With
rngCell. Select
|
In der Regel wird diese Variante oft benutzt.
Diese kann man nur nicht verwenden, sollte man mehrere (nicht zusammenhängende) Bereiche im Tabellenblatt untereinander benutzen - was selten der Fall ist.
Man kann das auch noch kombinieren:
1 2 3 4 5 6 7 8 9 10 11 12 | Dim rngCell As Excel.Range
With Worksheets( "Tabelle1" )
Set rngCell = .Range(.Cells(1, "A" ). End (xlDown), .Cells(.Rows.Count, "A" ). End (xlUp))
If rngCell.Cells.Count > 1 Then Set rngCell = rngCell(1)
End With
rngCell. Select
|
Sagen wir nun mal, du hast die letzte leere Zelle gefunden und willst dahin etwas kopieren:
1 2 3 4 | rngCell.Resize(5).Value = Worksheets( "Tabelle2" ).Range( "A3:A7" ).Value
|
|