使用 With 块

与块一起使用可以加速运行宏的过程。而是编写范围,图表名称,工作表等,你可以使用如下所示的块;

With ActiveChart
    .Parent.Width = 400
    .Parent.Height = 145
    .Parent.Top = 77.5 + 165 * step - replacer * 15
    .Parent.Left = 5
End With 

哪个比这更快:

ActiveChart.Parent.Width = 400
ActiveChart.Parent.Height = 145
ActiveChart.Parent.Top = 77.5 + 165 * step - replacer * 15
ActiveChart.Parent.Left = 5

笔记:

  • 输入 With 块后,无法更改对象。因此,你不能使用单个 With 语句来影响许多不同的对象

  • 不要跳入或跳出 With 块。如果执行 With 块中的语句,但未执行 With 或 End With 语句,则包含对该对象的引用的临时变量将保留在内存中,直到你退出该过程

  • 不要在语句中循环,特别是如果缓存的对象用作迭代器

  • 你可以通过将一个 With 块放在另一个中来嵌套 With 语句。但是,由于外部 With 块的成员在内部 With 块中被屏蔽,因此必须在内部 With 块中为外部 With 块中的对象的任何成员提供完全限定的对象引用。

嵌套示例:

此示例使用 With 语句在单个对象上执行一系列语句。
对象及其属性是通用名称,仅用于说明目的。

With MyObject 
    .Height = 100               'Same as MyObject.Height = 100. 
    .Caption = "Hello World"    'Same as MyObject.Caption = "Hello World". 
    With .Font 
        .Color = Red            'Same as MyObject.Font.Color = Red. 
        .Bold = True            'Same as MyObject.Font.Bold = True. 
        MyObject.Height = 200   'Inner-most With refers to MyObject.Font (must be qualified
    End With
End With

有关 MSDN 的更多信息