VBA "With object"语法 - 您可以参考对象本身吗?



当我对一个对象做很多不同的事情时,我经常使用With对象语法。它是调用对象属性/方法的有用简写,而不必重复使用对象名称来打乱代码。然而,有时我想调用一个函数,该函数将对象本身作为参数。在这种情况下,有什么方法可以引用对象吗?

' Class Module
' Class1
' Code Module
Sub f(byref obj as Class1)
End Sub
Sub test()
  Dim obj as Class1: set obj = new Class1
  With obj
    f Me ' Doesn't work - can you refer to obj in this context?
    f obj ' Works but I don't like it when the object has a long name
  End With
End Sub

不,没有。您只需要使用对象本身,就像您在代码中所做的那样。

我意识到这是一篇旧帖子,但我认为这可能会帮助其他寻找解决方案的人。事实上,我已经使用了一个小的变通方法。这不像拥有"我"这样的东西(在这里不起作用)那么好,但它会有所帮助。

您可以使用set语句将对象分配给一个临时变量,该变量可以在With语句中使用,如下例所示(使用上面的原始示例):

set s= obj with s f s end with

变量s可以是您想要的任何较短的名称,因为它的作用类似于一个变量。当您有一个大的对象规范来代替obj时,这就派上了用场。希望这能帮助到别人。

最新更新