在包含工作表名称的string上使用.range属性

我在工作簿中的单元格内有一个string,用于定义查找应该完成的范围的地址。

作为一个例子,假设这个string被称为LookupRange并且具有值:

''Rate Sheet'!Y111:AA126 

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

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

有没有办法使用.Range()属性,而不使用.Worksheets()属性?

例如,也许有办法做到这样的事情:

 Set yRange = ThisWorkbook.Range(LookupRange) 

如果没有,我想我可能不得不写一些代码来提取工作表范围内的工作表名称?

假设LookupRange是一个String,你可以使用Mid()InStr()从stringMid()提取Sheet和Range:

 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 

我不知道你在做什么样的查询,但这应该工作..(parsing它作为一个string)

 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"是一个包含工作表地址"Sheet2!Y111:AA126" (或任何)的"Sheet2!Y111:AA126"单元格”,在“查找”中使用。

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