如何用对象引用

Apr*_*ion 6 excel vba excel-2007 excel-vba

With如果我想要对象本身,而不是它的属性/方法,我如何引用我在里面使用的对象?

With ThisWorkbook.Sheets("MySheet")
    Call MySub(ThisWorkbook.Sheets("MySheet")) ' works OK, but duplicated
    Call MySub(this) ' does not works
    .Range(...).Value2 = 1
    ...
End With
Run Code Online (Sandbox Code Playgroud)

+这里的术语是什么?我甚至不知道如何撰写谷歌查询,并得到一些有用的结果(因为with是一个常见的词)...


更新:澄清一下,我正在思考像with ... as handlepython语法这样的句柄,而不是面向对象的this关键字

Ken*_*ite 4

with首先不使用怎么样?它使您的代码更具可读性,不再使用更多内存(因为该with语句无论如何都必须分配临时变量),并且不那么混乱。

Dim WS as WorkSheet
WS = ThisWorkBook.Sheets("MySheet")
Call vymaz_obrazky(WS)
WS.Range(...).Value2 = 1
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,总成本是额外增加一行代码(语句DIM),并且总共减少了 9 次击键。(该DIM语句是 19 次击键,改为WS三行中是 6 次击键,但是您节省了with(4)和重复(30),大约节省了 9 次击键。)