Stephe muss ein Makro entwickeln, das eine Operation basierend auf den Zellen ausführt, die ein Benutzer auswählt, bevor er das Makro ausführt. Sie weiß, wie dies zu tun ist, wenn der Benutzer einen Zellbereich auswählt, aber sie weiß nicht, wie sie die Zellen in einer Auswahl durchlaufen soll, wenn der Benutzer einen nicht zusammenhängenden Zellbereich auswählt.

Wenn es um VBA geht, gibt es kaum einen Unterschied zwischen einer zusammenhängenden Auswahl und einer nicht zusammenhängenden Auswahl. Mit Excel können Sie auf alle gleich zugreifen. Betrachten Sie das folgende Code-Snippet:

Dim c As Range

For Each c In Selection     ' do something here     MsgBox c.Address & vbTab & c.Value Next c

In diesem Fall werden die Zellen im ausgewählten Bereich nacheinander mithilfe der For …​ Next-Schleife schrittweise durchlaufen. Innerhalb der Schleife stellt die Variable c eine einzelne Zelle dar und kann wie gezeigt in Referenzen verwendet werden.

Wenn Sie aus irgendeinem Grund auf jeden zusammenhängenden Bereich innerhalb der Auswahl zugreifen möchten, können Sie dies tun, indem Sie die Gruppe Bereiche speziell ansprechen, wie in diesem Snippet gezeigt:

Dim a As Range Dim c As Range

For Each a In Selection.Areas     'Now each a refers to a contiguous range     'Do something here with areas, if desired     For Each c In a.Cells         'Now each c refers to a cell in the area         'Do something here         MsgBox c.Address & vbTab & c.Value     Next c Next a

Sie sollten auch beachten, dass Sie, wenn der Bereich, auf den Sie zugreifen möchten (zusammenhängend oder nicht zusammenhängend), in Excel benannt wurde, auch nur auf die Zellen im benannten Bereich zugreifen können. Ersetzen Sie einfach das Wort „Auswahl“ in jedem dieser Beispiele durch den Namen des Bereichs auf folgende Weise:

Dim c As Range

For Each c In Range("MyNamedRange")

' do something here     MsgBox c.Address & vbTab & c.Value Next c

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (8701) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: