VBA'with'语句可以涵盖多个范围或对象吗?
只是想知道是否可以在不添加数组或循环的情况下简化以下代码。
变量 Cell1、Cell2 和 Cell3 是高度独立的。这意味着它们不会每次都相同,因为它们来自之前的几次计算。
With Rng
With .Columns(Cell1).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With .Columns(Cell2).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With .Columns(Cell3).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
有没有办法写出类似的东西:
With Rng
With .Columns(Cell1).Interior, .Columns(Cell2).Interior, .Columns(Cell3).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
谢谢,
回答
你可以使用联盟。
With Rng
With Union(.Columns(Cell1), .Columns(Cell2), .Columns(Cell3)).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
- Could get rid of the `.PatternColorIndex = xlAutomatic`, `.TintAndShade = 0`, and `.PatternTintAndShade = 0` too. They're superfluous. Also `vbYellow` is a bit more meaningful than `65535`.