2

如果这已经得到回答,我很抱歉,但我没有运气搜索这个。

当工作表被变量引用时,访问工作表属性的最佳方法是什么?

这会引发编译错误:

Sub Tst1(Wk As Worksheet)
    Debug.Print Wk.pbOK
End Sub

这个可行,但有更好的方法吗?谢谢。

Sub Tst2(Wk As Object)
    Debug.Print Wk.pbOK
End Sub
4

2 回答 2

1

我想说把他们两个结合起来。第一个的优点是它保留了函数的类型安全。第二个的优点是它有效。:)

尝试将参数保留为工作表,但在询问属性之前将其转换为对象(使用临时变量,它只花费 4 字节指针/副本):

Public Sub Test1(Wk As Worksheet)
    Dim tempObj As Object
    Set tempObj = Wk
    Debug.Print tempObj.pbOk
End Sub

我知道这应该是一个答案而不是一个问题,但是谁能告诉我为什么 VBA 似乎没有,CObj()所以工作表可以在没有临时变量的情况下直接转换?我会使用它,但它没有被识别。也许只有VB?

于 2013-11-05T23:50:08.113 回答
1

使用 KazJaw 的提示,发现如果:

Sub Tst1(Wk As Worksheet)
    Debug.Print Thisworkbook.Worksheets(Wk.Name).pbOK
End Sub

我能想到的这种方法的唯一用处是存储宏处理的状态(或将工作表标记为在会话中处理),因为重新打开工作簿后不会保存值。

于 2013-11-06T00:37:47.963 回答