Excel VBA工作表变量

Excel VBA工作表变量,excel,vba,Excel,Vba,我似乎不能像预期的那样使用工作表变量 Function Test() Test = Application.ThisCell.Worksheet.Range("A1").Value End Function 上述函数按预期工作,返回与调用函数的单元格位于同一工作表中的单元格“A1”的值 Function Test() Dim ws As Worksheet ws = Application.ThisCell.Worksheet Test = ws.Range("

我似乎不能像预期的那样使用工作表变量

Function Test()
    Test = Application.ThisCell.Worksheet.Range("A1").Value
End Function
上述函数按预期工作,返回与调用函数的单元格位于同一工作表中的单元格“A1”的值

Function Test()
    Dim ws As Worksheet
    ws = Application.ThisCell.Worksheet
    Test = ws.Range("A1").Value
End Function
这一个在功能上应该是相同的,但会中断并返回#值!相反

我可以使用前者,但是,在需要多次的公式中,我宁愿只获取一次工作表位置


欢迎提供任何关于我的第二个示例不起作用的原因以及如何解决我的问题的信息。

当使用
工作表
变量时,必须使用
设置

在您的情况下,
Set ws=thiswoolk.Sheets(“工作表名称”)


想。。。如果您试图使用某个变量设置工作表,我会硬编码名称或使用循环来获取它。

谢谢,这很有效。其他变量不用Set也可以正常工作,所以我没想到我会需要它。对象变量(即那些不是简单数据类型的变量)需要
Set