如何通过VBA引用单元格中提到的另一个单元格的单元格

时间:2017-01-31 04:55:25

标签: vba excel-vba reference range excel

我有一个名为" Book1"的excel文件用" Sheet1"和" Sheet2"。在Sheet1中,A1的单元格值是"' [Book1.xlsb] Sheet2'!$ A $ 14",这是作为一些公式结果导出的。我希望通过VBA选择单元格A1中提到的单元格引用。

我把VB代码作为

Range(Range("A1")).Select or Range([Indirect("A1")]).Select

此代码仅在A1中引用的单元格位于同一工作表中时有效,但如果引用的单元格位于不同的工作表中,则该代码不起作用

有人可以帮忙解决这个问题

2 个答案:

答案 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