Selection.Rows.Count (Vba, Excel 2007)

Hallo!

Ich hätte folgende Frage:

Wenn ich zB die Zeilen 3 - 8 markiere (6 Zeilen) und Selection.Rows.Count abfrage kommt 6 heraus - soweit, so gut!

Wenn ich nun aber die Zeilen 3, 5-7 markiere (4 Zeilen) kommt 1 raus weil Excel das mit der unzusammenhängenden Markierung irgendwie nicht checkt - gibts da eine Möglichkeit das zu umgehen? Also damit dann doch 4 zurückgeliefert wird?

Vielen Dank!
mfg

Wenn ich zB die Zeilen 3 - 8 markiere (6 Zeilen) und
Selection.Rows.Count abfrage kommt 6 heraus - soweit, so gut!

Wenn ich nun aber die Zeilen 3, 5-7 markiere (4 Zeilen) kommt
1 raus weil Excel das mit der unzusammenhängenden Markierung
irgendwie nicht checkt - gibts da eine Möglichkeit das zu
umgehen? Also damit dann doch 4 zurückgeliefert wird?

Hallo Wotan,

spontan fällt mir dazu erstmal nur ein Workaround ein:

Sub tt()
Dim S As Range, Zei As Long
Range("3:8").Select
MsgBox Selection.Rows.Count
Range("3:3, 5:7").Select
For Each S In Selection.Rows
 Zei = Zei + 1
Next S
MsgBox Zei
End Sub

Gruß
Reinhard

Grüezi Wotan

Wenn ich zB die Zeilen 3 - 8 markiere (6 Zeilen) und
Selection.Rows.Count abfrage kommt 6 heraus - soweit, so gut!

Hier markierst Du einen einzelnen Bereich…

Wenn ich nun aber die Zeilen 3, 5-7 markiere (4 Zeilen) kommt
1 raus weil Excel das mit der unzusammenhängenden Markierung
irgendwie nicht checkt - gibts da eine Möglichkeit das zu
umgehen? Also damit dann doch 4 zurückgeliefert wird?

…und hier dann eben mehrere die nicht zusammenhängen.

Daher musst Du alle Einzelbereiche der Markierung durchlaufen und die Rows darin addieren - das klappt dann natürlich auch, wenn nur ein Bereich markiert ist:

Public Sub tr()
Dim rngArea As Range
Dim lngRows As Long
 For Each rngArea In Selection.Areas
 lngRows = lngRows + rngArea.Rows.Count
 Next rngArea
 MsgBox lngRows
End Sub


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Vielen Dank!
Das war genau das, was ich gesucht habe!

mfg