2017-01-31 7 views
1

"Sheet1"と "Sheet2"というExcel1という名前のExcelファイルがあります。 Sheet1では、A1のセル値は "[Book1.xlsb] Sheet2 '!$ A $ 14"であり、数式の結果として導出されます。私は、セルA1で言及したセル参照をVBAで選択したい。VBAでセルに記載されている別のシートのセルを参照する方法

セルと呼ばが別のシートに

であれば、私はこのコードでは、A1に言及セルが同じシートにある場合にのみ動作しますが、それは動作しません

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

として誰かをVBのコードをすることができ入れています

答えて

0

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

または

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

をおかげでたくさん...それは動作します... :) –

+0

どういたしまして。答えを受け入れることができます。ありがとうございました! – user3598756

3

両方のワークシート( "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 
関連する問題