使用工作表变量获取工作表属性

时间:2013-11-05 21:58:20

标签: vba excel-vba excel

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

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

这会引发编译错误:

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

这个有效,但还有更好的方法吗?感谢。

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

2 个答案:

答案 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

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