Microsoft Excel

Herbers Excel/VBA-Archiv

Selection: Markierte Zeilen ermitteln

Betrifft: Selection: Markierte Zeilen ermitteln von: Martin
Geschrieben am: 21.04.2014 18:03:18

Hallo liebe Excelfreunde,

was ist der einfachste VBA-Lösungsweg um bei einer Zellenselection (teilweise mit mehreren Areas) jede Zeile einmal zu ermitteln? Hier mal ein Beispielmakro mit zwei Areas, die beide Zellen aus Zeile 8 und 9 beinhalten. Bei meinem Code werden die beiden Zeilen daher leider doppelt ermittelt:

Sub SelectedRows()
    Dim rngArea As Range
    Dim iRow As Integer
    
    'Zellbereich auswählen (Überschneidung Zeile 8 und 9)
    Range("B5:B9,C8:C17").Select
    
    'Zeilen ermitteln
    For Each rngArea In Selection.Areas
        For iRow = 0 To rngArea.Rows.Count - 1
            Debug.Print rngArea.Rows.Row + iRow
        Next
    Next
End Sub

Für Vorschläge bin ich wie immer sehr dankbar!

Viele Grüße

Martin

  

Betrifft: AW: Selection: Markierte Zeilen ermitteln von: Tino
Geschrieben am: 21.04.2014 19:06:46

Hallo,
einiges was mir einfällt, entweder die Zeilen in einem Array ablegen und abfragen ob schon vorhanden.

Oder wie hier, die Bereiche zu einem zusammenhängenden Bereich machen.

Sub SelectedRows()
Dim rngArea As Range, rngTmp As Range
Dim iRow As Integer

'Zellbereich auswählen (Überschneidung Zeile 8 und 9)
Range("B5:B9,C8:C17").Select
'Zeilen ermitteln
For Each rngArea In Selection.Areas
    If rngTmp Is Nothing Then
        Set rngTmp = rngArea.EntireRow
    Else
        Set rngTmp = Union(rngTmp, rngArea.EntireRow)
    End If
Next

For Each rngArea In rngTmp.Areas
    For iRow = 1 To rngArea.Rows.Count
        Debug.Print rngArea.Rows(iRow).Row
    Next iRow
Next

End Sub
Gruß Tino


  

Betrifft: Danke, das ist perfekt! von: Martin Springer
Geschrieben am: 21.04.2014 19:31:23

Hallo Tino,

vielen Dank für deine Hilfe, so läuft das Makro perfekt. Ich hatte auch schon an ein Dictionary Object oder Array gedacht und war gespannt, ob es auch einfacher geht. Die Möglichkeit Areas mit Union zu verbinden war mir unbekannt, scheint aber der beste Lösungsweg zu sein.
Nochmals vielen Dank!

Viele Grüße

Martin


  

Betrifft: Scripting.Dictionary ... von: Matthias L
Geschrieben am: 21.04.2014 19:11:32

Hallo

Schau mal in der Recherche nach Scripting.Dictionary

Gruß Matthias


 

Beiträge aus den Excel-Beispielen zum Thema "Selection: Markierte Zeilen ermitteln"