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

时间:2015-01-22 16:14:43

标签: excel vba excel-vba

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

举个例子,假设该字符串名为LookupRange,其值为:

''Rate Sheet'!Y111:AA126

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

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

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

例如,也许可以采用以下方式:

Set yRange = ThisWorkbook.Range(LookupRange)

如果没有,我想我可能要编写一些代码来从工作表范围中提取工作表名称?

3 个答案:

答案 0 :(得分:1)

假设LookupRange是一个字符串,您可以使用Mid()InStr()从字符串中提取工作表和范围:

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

答案 1 :(得分:0)

我不确切知道你在做什么样的查找,但这应该有效..(将其解析为字符串)

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"(或其他)的单个单元格。

答案 2 :(得分:0)

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