【问题标题】:How to refer a cell of another sheet mentioned in a cell through VBA如何通过VBA引用单元格中提到的另一张表的单元格
【发布时间】:2017-01-31 04:55:24
【问题描述】:

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

我把VB代码写成

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

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

谁能帮忙解决这个问题

【问题讨论】:

    标签: vba excel reference range


    【解决方案1】:

    你可以做以下任何一种方式:

    With Worksheets("Sheet2")
        .Activate
        .Range([Indirect("Sheet1!A1")]).Select
    End With
    

    With Worksheets("Sheet2")
        .Activate
        .Range(Worksheets("Sheet1").Range("A1")).Select
    End With
    

    【讨论】:

    • 不客气。然后,您可能想接受答案。谢谢!
    【解决方案2】:

    由于两个工作表(“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
    

    【讨论】:

      猜你喜欢
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多