使用 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 的更多資訊