Vba 如何将工作表和范围作为变量传递?

Vba 如何将工作表和范围作为变量传递?,vba,excel,range,worksheet,Vba,Excel,Range,Worksheet,我想在子程序之间传递工作表的名称和范围。以下内容引发“下标超出范围”错误: Sub This() x = "Sheet1" y = "D3" MsgBox (x.Range(y).Value) End Sub 这是 您的工作表是估价;其工作表为表1 dim x as string, y as string dim xx as worksheet, yy as range x = "Valuation" set xx = worksheets(x) y = "D3

我想在子程序之间传递工作表的名称和范围。以下内容引发“下标超出范围”错误:

Sub This()

    x = "Sheet1"
    y = "D3"

    MsgBox (x.Range(y).Value)

End Sub
这是

您的工作表是估价;其工作表为表1

dim x as string, y as string
dim xx as worksheet, yy as range

x = "Valuation"
set xx = worksheets(x)
y = "D3"
set yy = xx.range(y)
debug.print yy.address(0,0, external:=true)  '<~~returns Valuation!D3 (with the workbook name)

debug.print Sheet1.name    '<~~returns Valuation from CodeName
dim x作为字符串,y作为字符串
尺寸xx作为工作表,yy作为范围
x=“估价”
集合xx=工作表(x)
y=“D3”
设置yy=xx.范围(y)

debug.print yy.address(0,0,external:=true)'这基本上是对上一个问题的重复:。答案是,您的工作表被称为“估价”,而不是“Sheet1”。我只知道如何通过工作表的
名称
来引用工作表,您如何通过工作表的
代码名称
来引用工作表?@Gary的学生在链接
VBAProject.Sheet1.Range(“A1”)
或仅仅是
Sheet1.Range(“A1”)