在包含 sheet 名称的字符串上使用 .range 属性

Using .range property on string that includes sheet name

我在工作簿的单元格内有一个字符串,我用它来定义应该进行查找的范围的地址。

例如,假设字符串名为 LookupRange 且值为:

''Rate Sheet'!Y111:AA126

我的问题是,在我的代码中,当我设置范围时,我必须使用:

Set yRange = ThisWorkbook.Worksheets("Rate Sheet").Range(LookupRange)

有没有办法在不使用 .Worksheets() 属性 的情况下使用 .Range() 属性?

例如,也许可以做类似的事情:

Set yRange = ThisWorkbook.Range(LookupRange)

如果没有,我想我可能需要编写一些代码来从 sheet 范围中提取 sheetname?

假设 LookupRange 是一个字符串,您可以使用 Mid()InStr():

从字符串中提取 Sheet 和范围
Sub TestIt()
Dim LookupRange As String

LookupRange = "'Rate Sheet'!Y111:AA126"

SheetL = Mid(LookupRange, 2, InStr(2, LookupRange, "'") - 2)
RangeL = Mid(LookupRange, InStr(1, LookupRange, "!") + 1, Len(LookupRange))

Set yRange = ThisWorkbook.Sheets(SheetL).Range(RangeL)

End Sub

我不知道你到底在做什么查找,但这应该有用..(将其解析为字符串)

Sub range_set()

Dim rr As Range
Set rr = Range(CStr(Range("LookupRange")))

Debug.Print Application.WorksheetFunction.VLookup(1, rr, 2, False)

End Sub

其中命名范围 "LookupRange" 是包含要在 "lookup".[=13 中使用的 sheet 地址 "Sheet2!Y111:AA126"(或其他)的单个单元格=]

Set yRange = Application.Range("'Rate Sheet'!Y111:AA126")