VBA 'with' 语句可以涵盖多个范围或对象吗?

Fel*_*ero 2 excel vba

只是想知道是否可以在不添加数组或循环的情况下简化以下代码。

变量 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
Run Code Online (Sandbox Code Playgroud)

有没有办法写出类似的东西:

    With Rng
        With .Columns(Cell1).Interior, .Columns(Cell2).Interior, .Columns(Cell3).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 65535
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
    End With
Run Code Online (Sandbox Code Playgroud)

谢谢,

nor*_*rie 6

你可以使用联盟。

    With Rng
        With Union(.Columns(Cell1), .Columns(Cell2), .Columns(Cell3)).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 65535
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
    End With
Run Code Online (Sandbox Code Playgroud)

  • 也可以摆脱`.PatternColorIndex = xlAutomatic`、`.TintAndShade = 0`和`.PatternTintAndShade = 0`。他们是多余的。另外,“vbYellow”比“65535”更有意义。 (3认同)