我有一个名为" Book1"的excel文件用" Sheet1"和" Sheet2"。在Sheet1中,A1的单元格值是"' [Book1.xlsb] Sheet2'!$ A $ 14",这是作为一些公式结果导出的。我希望通过VBA选择单元格A1中提到的单元格引用。
我把VB代码作为
Range(Range("A1")).Select or Range([Indirect("A1")]).Select
此代码仅在A1中引用的单元格位于同一工作表中时有效,但如果引用的单元格位于不同的工作表中,则该代码不起作用
有人可以帮忙解决这个问题
答案 0 :(得分:5)
由于两个工作表(" Sheet1"和" Sheet2")都在同一个工作簿中,因此" Sheet1"单元格A1应该" Sheet2!$ A $ 14" 。
下面的代码比它需要的时间长一些,但我想通过所有步骤来更好地解释。
我使用Split
函数分隔Worksheet
名称和Range.Address
,并将结果放在2个数组元素中。
然后,检索第一个数组RngString
元素作为工作表的名称,然后第二个数组元素是range.address。
代码
Option Explicit
Sub SelectRange()
Dim Rng As Range
Dim RngString As Variant
Dim ShtName As String
Dim RngAddress As String
RngString = Split(Worksheets("Sheet1").Range("A1").Value, "!")
' sheet name is the first array element
ShtName = RngString(0)
' Range address is the second array element
RngAddress = RngString(1)
' setting the Rng object
Set Rng = Worksheets(ShtName).Range(RngAddress)
' since your range is in another worksheet, you need to activate it first
Worksheets(ShtName).Activate
' select the range
Rng.Select
End Sub
答案 1 :(得分:1)
你可以采取以下两种方式之一:
With Worksheets("Sheet2")
.Activate
.Range([Indirect("Sheet1!A1")]).Select
End With
或
With Worksheets("Sheet2")
.Activate
.Range(Worksheets("Sheet1").Range("A1")).Select
End With