当我对一个对象做很多不同的事情时,我经常使用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时,这就派上了用场。希望这能帮助到别人。