VBA“;“带对象”;语法-您可以引用对象本身吗?

VBA“;“带对象”;语法-您可以引用对象本身吗?,vba,Vba,当我对一个对象做很多不同的事情时,我经常使用With object语法。它是调用对象的属性/方法的一种有用的简写方式,而不必重复使用对象的名称来混乱代码。然而,有时我想调用一个函数,该函数将对象本身作为参数。在这种情况下,有什么方法可以引用该对象吗 ' Class Module ' Class1 ' Code Module Sub f(byref obj as Class1) End Sub Sub test() Dim obj as Class1: set obj = new Clas

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

' 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
用s
f-s
以


变量s可以是您希望的任何更短的名称,因为它的行为类似于变量。当您有一个大型对象规范来代替obj时,这就很方便了。希望这对某人有所帮助。

这取决于类型。你的例子只针对一个班级。对于范围,可以使用.cells(请参见)