如何使用嵌套vbawith语句?
关键点
- 使用 VBA With 语句来最小化代码。
- 使用 With 语句时一次只能使用一个对象。
什么是带有声明的VBA
VBA With 是一条语句,用于指定一个对象一次,然后为其执行多个语句。简单来说,就是使用WITH语句指定一个对象,然后就可以一次性访问所有的属性和方法。它以“With”开始,以“Finish with”结束。
带语句的 VBA 语法
以下是在 VBA 中使用 With 语句所需的语法:
With [OBJECT] [Statement] End With
- With :这是语句的起始关键字,它告诉 VBA 您正在指定所提到的对象。
- 对象:这里您需要指定要使用的对象。
- 语句:要对指定对象执行的一条或多条语句。
- End With :这是语句的结束关键字。
了解 VBA With 语句的示例
我们通过一个例子来深入的理解一下。假设您要更改单元格 A1 的字体颜色、大小和名称。要执行这三件事,您需要访问三个不同的VBA 字体属性,代码如下:
Range("A1").Font.Color = RGB(0, 0, 255) Range("A1").Font.Size = 16 Range("A1").Font.Name = "Consolas"
但这里我们将使用 With 语句来代替上面的代码。要使用VBA With语句,可以按照以下步骤操作:
- 首先输入键盘“With”。
- 之后,使用VBA范围指定单元格A1,使用字体对象指定字体对象。
- 接下来,您需要输入三个属性的代码以及要应用的值。
- 最后,使用关键字“End With”结束语句。
这是您刚刚编写的代码。
Sub MyMacro() With Range("A1").Font .Color = RGB(0, 0, 255) .Size = 16 .Name = "Consolas" End With End Sub
现在让我们看一下这两个代码,并尝试了解使用“With”语句有什么区别。
在第一个代码中,您使用了字体对象三次,然后使用了您想要访问并想要进行更改的属性。
但在第二个代码中,您使用了 With 语句并立即指定了字体对象。然后在“With”语句中添加三行代码来访问这三个属性。
当您使用“With”语句并指定一个对象时,它告诉 VBA 您编写的所有语句都应该与提到的对象一起执行。这不仅可以为您提供结构化代码,还可以加快宏的执行速度并提高效率。
嵌套 with 语句
我一开始就告诉过你,使用With语句只能指定一个对象。但有一种方法可以使用多个甚至多个项目。这是使用VBA LOOPS ,我们将使用 FOR EACH LOOP 循环多个对象并使用“With”。
让我举一个例子;您需要浏览所有工作表并将以下所有内容应用于每个工作表中的所有单元格。
- 字体大小:16
- 字体:Verdena
在工作簿中,您有五个工作表,如下例所示:
使用以下步骤编写嵌套的“With”语句。
- 首先,您必须声明一个变量才能使用工作表对象。
- 之后,就像我说的,您需要使用For Each Loop 。因此,您需要编写一个带有循环的代码,可以循环遍历所有工作表。
- 现在输入 with 语句,它可以应用我们上面讨论的字体设置。要引用工作表中的所有单元格,您可以在指定主题时使用“单元格”。
这是您刚刚编写的完整代码。
Sub MyMacro() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets With Cells .Font.Size = 16 .Font.Name = "Verdena" End With Next ws End Sub