「Sheet1」と「Sheet2」を含む「Book1」という名前のExcelファイルがあります。 Sheet1では、A1のセル値は "'[Book1.xlsb] Sheet2'!$ A $ 14"であり、これは数式の結果として導出されます。セルA1に記載されているセル参照をVBAで選択したい。
私はVBコードとして
Range(Range("A1")).Select or Range([Indirect("A1")]).Select
このコードは、A1で参照されているセルが同じシートにある場合にのみ機能しますが、参照されているセルが別のシートにある場合は機能しません。
誰かがこれを解決するのを手伝ってもらえますか
次のいずれかの方法を実行できます。
With Worksheets("Sheet2")
.Activate
.Range([Indirect("Sheet1!A1")]).Select
End With
または
With Worksheets("Sheet2")
.Activate
.Range(Worksheets("Sheet1").Range("A1")).Select
End With
両方のワークシート(「Sheet1」と「Sheet2」)が同じワークブックにあるため、「Sheet1」セルA1の値は"Sheet2!$ A $ 14"である必要があります。
以下のコードは必要以上に少し長くなっていますが、より適切に説明するためにすべての手順を実行したいと思いました。
Split
関数を使用してWorksheet
名とRange.Address
を分離し、結果を2つの配列要素に入れています。
その後、最初の配列RngString
要素をワークシートの名前として取得し、2番目の配列要素が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