Berichtigung
11.09.2011 10:12:50
Erich
Hi Matthias,
mit diesem Beitrag möchte ich verhindern helfen, dass später jemand meint,
deinen Code ("aus dem Herber-Archiv!") so verwenden zu können/sollen.
Er stimmt nämlich nicht. Und er ist umständlich. Und er ist unschön.
Er stimmt nicht, weil eine Zeile und eine Spalte zu viel ausgewählt werden. Das wird in "berechne1()" deutlich.
Er ist umständlich - die Lösung mit Resize ist einfach entscheidend besser.
Er ist unschön: Bei der Deklaration von Mycol, Myrow sollte man auf die Typangabe nicht verzichten.
Antworten hier im Forum werden leicht als vorbildhaft angesehen...
Und um nicht nur zu meckern, noch ein wenig Code:
Option Explicit
Sub berechne1()
Dim Mycol, Myrow
Mycol = Range("D5").Column + 28
Myrow = Range("D5").Row + 42
MsgBox Cells(Myrow, Mycol).Address
Range("D5:" & Cells(Myrow, Mycol).Address).Select
With Selection
MsgBox "Zeilen: " & .Rows.Count & " / Spalten: " & .Columns.Count & _
vbLf & "(Der Bereich sollte 42 Zellen hoch und 28 breit sein.)"
End With
End Sub
Sub berechne2()
Dim lngCol As Long, lngRow As Long
lngCol = Range("D5").Column - 1 + 28
lngRow = Range("D5").Row - 1 + 42
MsgBox Cells(lngRow, lngCol).Address
With Range(Cells(5, 4), Cells(lngRow, lngCol))
MsgBox "Zeilen: " & .Rows.Count & " / Spalten: " & .Columns.Count
End With
End Sub
Sub berechne3()
With Cells(5, 4).Resize(42, 28)
MsgBox "Zeilen: " & .Rows.Count & " / Spalten: " & .Columns.Count
End With
' und wenn nur die Zelle rechts unten gebraucht wird:
With Cells(5, 4).Offset(41, 27)
MsgBox "Rechts unten:" & vbLf & vbLf & _
"Zelle " & .Address & " in Zeile " & .Row & " / Spalte " & .Column
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S.: Nix für ungut - und noch eine schönen Sonntag!