
在 VBA 编程中,With 语句用于集中操作同一对象的多个属性与方法,从而省去反复书写对象引用的步骤,既简化代码又提升执行效率。
With 语句以 With 开头、End With 结尾,所有对该对象的操作均置于二者之间。其标准语法格式如下:
With [对象]
.[属性] = [值]
.[方法]()
'其他相关操作
End With在 With 块内部,所有属性和方法调用均需以英文句点(.)开头,后接具体的属性名或方法名。
With 语句的实际应用示例
假设我们需要对当前工作簿中的 Sheet1 工作表执行三项操作:重命名、设置标签颜色为浅色主题、并将其隐藏。
若不使用 With 语句,代码可能如下所示:
Sub MyCode()
Worksheets("Sheet1").Name = "新名称"
Worksheets("新名称").Tab.ThemeColor = xlThemeColorLight1
Worksheets("新名称").Visible = xlSheetHidden
End Sub可见,每行都重复了 Worksheets("xxx") 这一对象引用,不仅冗长,还容易因名称变更导致出错。
采用 With 结构后,代码更简洁清晰:
Sub MyCode()
With Worksheets("Sheet1")
.Name = "新名称"
.Tab.ThemeColor = xlThemeColorLight1
.Visible = xlSheetHidden
End With
End SubWith 语句的嵌套用法
With 语句支持嵌套使用——即当某属性本身返回一个对象时,可在此基础上再启用一个新的 With 块,实现对子对象的批量操作。
延续上述场景,若还需对 Sheet1 中 A1:A10 区域进行格式设置(如填充色、字体大小与字体类型),可这样编写:
Sub MyCode()
With Worksheets("Sheet1")
.Name = "新名称"
.Tab.ThemeColor = xlThemeColorLight1
.Visible = xlSheetHidden
With .Range("A1:A10")
.Interior.ThemeColor = xlThemeColorAccent1
.Font.Size = 12
.Font.Name = "等线"
End With
End With
End Sub小结
本文介绍了 VBA 中的 With 语句结构。它能有效整合对同一对象的多项操作,显著减少重复编码;同时支持多层嵌套,适用于复杂对象层级的操作场景,有助于增强代码可读性、可维护性及运行性能。

















