Angenommen, Sie haben ein leeres Arbeitsblatt und auf den Bereich A1: F1 wird das Format „Zusammenführen und zentrieren“ angewendet. Wenn Sie Spalte B durch Klicken auf die Spaltenüberschrift auswählen, wählt Excel pflichtbewusst Spalte B aus und macht Zelle B2 zur aktiven Zelle. Dieses Verhalten wurde entweder in Excel 2000 oder Excel 2002 geändert. In früheren Versionen von Excel erhalten Sie die zusammengeführte Zelle (A1: F1)

in der Auswahl enthalten.

Anscheinend liegt VBA etwas hinter dem Verhalten der Benutzeroberfläche zurück, da bei Auswahl der gesamten Spalte B auch alle Spalten A bis F ausgewählt werden:

Sub TestMacro1()

Range("B3").EntireColumn.Select End Sub

An diesem Verhalten scheint kein Weg vorbei zu sein. Selbst wenn Sie die EntireColumn-Methode entfernen und einfach Spalte B auswählen, erhalten Sie dennoch alle Spalten A bis F:

Sub TestMacro2()

Range("B:B").Select End Sub

Es ist wahrscheinlich ein besserer Programmieransatz, die Spalte nicht vorzubereiten, um eine Aktion für diese Spalte auszuführen, sondern die Aktion direkt auszuführen. Angenommen, Sie möchten alle Zellen in Spalte B fett formatieren. Sie können dies auf folgende Weise tun:

Sub TestMacro3()

Range("B3").EntireColumn.Font.Bold = True End Sub

Dies betrifft nur die Zellen in Spalte B und nichts in A oder C bis F. Sie können einen iterativen Ansatz verwenden, um die Zellen in der gewünschten Spalte zu verarbeiten:

Sub TestMacro4()

Dim rCell As Range     Dim X As Long

X = 1     For Each rCell In Range("B:B")

rCell.Value = X         X = X + 1     Next End Sub

Dies fügt einen Wert in jede Zelle in Spalte B ein und ignoriert alle Zusammenführungen, die eine Zelle in Spalte B enthalten.

Wenn Sie zwingend eine ganze Spalte auswählen müssen, ohne dass aufgrund zusammengeführter Zellen Spalten hinzugefügt werden, könnten Sie versucht sein, die MergeCells-Eigenschaft zu verwenden, um nach den zusammengeführten Zellen zu suchen. Laut der VBA-Online-Hilfe sollte Folgendes die zusammengeführten Zellen in der Auswahl erkennen und dann aus dem Makro ausgeben:

Sub TestMacro5()

Range("B3").EntireColumn.Select     If Selection.MergeCells Then         Exit Sub     End If ' ' Perform rest of macro ' End Sub

Leider zeigen Tests, dass dieser Code nicht funktioniert. Die MergeCells-Eigenschaft gibt anscheinend nur True zurück, wenn die gesamte Auswahl aus zusammengeführten Zellen besteht, nicht wenn die Auswahl nur wenige zusammengeführte Zellen enthält. Das bedeutet, dass Sie auf andere Weise feststellen müssen, ob zusammengeführte Zellen die beabsichtigte Auswahl geändert haben, z. B. die folgenden:

Sub TestMacro6()

Range("B3").EntireColumn.Select     If Selection.Columns.Count > 1 Then         Exit Sub     End If ' ' Perform rest of macro ' End Sub

Bei diesem Ansatz wird die Anzahl der Spalten in der Auswahl untersucht und dann ausgegeben, wenn Excel meldet, dass mehr als eine vorhanden ist.

_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 (12218) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.

Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: