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