Kolommen selecteren in VBA wanneer cellen worden Samengevoegd

Stel dat je een leeg werkblad en het bereik A1 hebben: F1 heeft de "merge en centrum" formaat toegepast. Als u kolom B te selecteren door te klikken op de kolomkop, Excel selecteert plichtsgetrouw kolom B en maakt cel B2 de actieve cel. Dit gedrag is gewijzigd in een van beide Excel 2000 of Excel 2002; in eerdere versies van Excel krijg je de samengevoegde cel (A1: F1) in de selectie opgenomen.

Blijkbaar VBA paden enigszins achter het gedrag van de user interface, zoals het selecteren van de hele kolom B eindigt ook alle kolommen, A te selecteren door middel van F:

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

Er lijkt geen manier om dit gedrag te zijn. Zelfs als je de EntireColumn methode te elimineren en selecteer eenvoudig kolom B, krijg je toch al de kolommen A tot en met F:

Sub TestMacro2 ()
Range ("B: B") kiezen.
End Sub

Het is waarschijnlijk een betere aanpak van de programmering van de kolom ter voorbereiding van het doen van wat actie op die kolom niet selecteren, maar direct de actie uit te voeren. Bijvoorbeeld, laten we aannemen dat u alle van de cellen in kolom B vet te maken. U kunt dit doen op deze manier:

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

Dit beïnvloedt alleen de cellen in kolom B en niets in A of C tot F. U kan eveneens gebruik maken van een iteratieve benadering van de behandeling van de cellen in het gewenste kolom:

Sub TestMacro4 ()
Dim rCell als Waaier
Dim X As Long

X = 1
Voor Elke rCell In Range ("B: B")
rCell.Value = X
X = X + 1
Volgende
End Sub

Dit propt een waarde in elke cel in kolom B, en gemakshalve genegeerd samenvoegingen dat een cel in kolom B. omvatten

Als het verplicht is dat u in staat om een ​​hele kolom selecteren, zonder enige kolommen toegevoegd als gevolg van samengevoegde cellen, dan ben je misschien geneigd om de woning MergeCells gebruiken om te controleren of de samengevoegde cellen. Volgens de VBA online help, moet het volgende de samengevoegde cellen op te sporen in de selectie en dan dumpen uit de macro:

Sub TestMacro5 ()
Range ("B3"). EntireColumn.Select
Als Selection.MergeCells Dan
Exit Sub
End If
'
'Voer rest van macro-
'
End Sub

Helaas, het testen blijkt dat deze code niet zal werken. De eigenschap MergeCells retourneert blijkbaar uitsluitend indien de volledige selectie bestaat uit samengevoegde cellen, niet wanneer de keuze bevat slechts enkele samengevoegde cellen. Dat betekent dat u links naar een andere manier om te bepalen of samengevoegde cellen het beoogde selectie hebt aangepast, zoals de volgende:

Sub TestMacro6 ()
Range ("B3"). EntireColumn.Select
Als Selection.Columns.Count> 1 Dan
Exit Sub
End If
'
'Voer rest van macro-
'
End Sub

Deze aanpak onderzoekt het aantal kolommen in de selectie, en vervolgens dumpt uit of Excel meldt dat er meer dan één.

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (3093) is van toepassing op Microsoft Excel 97, 2000, 2002 en 2003. U kunt een versie van deze tip voor de ribbon-interface van Excel (Excel 2007 en later) vindt u hier: Kolommen selecteren in VBA wanneer cellen worden samengevoegd.