如果这已经得到回答,我很抱歉,但我没有运气搜索这个。
当工作表被变量引用时,访问工作表属性的最佳方法是什么?
这会引发编译错误:
Sub Tst1(Wk As Worksheet)
Debug.Print Wk.pbOK
End Sub
这个可行,但有更好的方法吗?谢谢。
Sub Tst2(Wk As Object)
Debug.Print Wk.pbOK
End Sub
我想说把他们两个结合起来。第一个的优点是它保留了函数的类型安全。第二个的优点是它有效。:)
尝试将参数保留为工作表,但在询问属性之前将其转换为对象(使用临时变量,它只花费 4 字节指针/副本):
Public Sub Test1(Wk As Worksheet)
Dim tempObj As Object
Set tempObj = Wk
Debug.Print tempObj.pbOk
End Sub
我知道这应该是一个答案而不是一个问题,但是谁能告诉我为什么 VBA 似乎没有,CObj()
所以工作表可以在没有临时变量的情况下直接转换?我会使用它,但它没有被识别。也许只有VB?
使用 KazJaw 的提示,发现如果:
Sub Tst1(Wk As Worksheet)
Debug.Print Thisworkbook.Worksheets(Wk.Name).pbOK
End Sub
我能想到的这种方法的唯一用处是存储宏处理的状态(或将工作表标记为在会话中处理),因为重新打开工作簿后不会保存值。