在包含工作表名称的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")