首页 > 解决方案 > 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

谢谢,

标签: excelvba

解决方案


你可以使用联合。

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

推荐阅读