• ベストアンサー

エクセルの参照先セルの選択について

こんばんは マクロ初心者の者です。 あるセルに別シートを参照する式が 入力されています。 「=Sheet2!A1」←こんな感じです。 その参照先セルを選択したいのですが どうすればいいでしょうか? どなたか、教えてください お願いします。 m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

あるセルに書かれた式「=Sheet2!A1」という情報から、Sheet2のA1セルを取得したい。 という事だと思うのですが、良いですか? Dim cel As Range Dim fx As String Dim sheetName As String Dim celName As String Dim pos As Integer Set cel = [あるセル] fx = cel.Formula これでfxという文字列変数に、あるセルに書かれた式「=Sheet1!A1」が取れます。 '先頭の「=」を除去します。 fx = Mid(fx, 2) '「!」の位置を検索 pos = InStr(fx, "!") '参照先のシート名決定 sheetName = Left(fx, pos-1) '参照先のセル名決定 celName = Mid(fx, pos+1) '取得した参照先のセルを取得。 Set 参照先のセル = ThisWorkbook.Worksheets(sheetName).Range(celName) 実際に動かしてないのでエラーが起きるかも?

naokichi000
質問者

お礼

早速のお返事ありがとうございます。 コメントを入れて頂いたので とても分かりやすかったです。 Formula使って作成してみます。 ありがとうございましたm(_ _)m

その他の回答 (2)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

同一シート内なら Precedents で良いようですが、別シートとなると簡単に出す方法が解りませんでした。 同一ブック内の別シート参照限定です。(他ブックへの参照は不可) 「a'''''''[]’’!! 一応↑こんなシート名でも拾うようにしたつもりですが、まだダメパターンがあるかも。 Sub Test() Dim r, sName As String, rAdd As String Dim cnt As Integer On Error Resume Next  If Not Selection.HasFormula Then Exit Sub  Set r = Selection.Precedents  If Not IsEmpty(r) Then    r.Select  Else    sName = Selection.Formula    For cnt = Len(sName) To 1 Step -1     If Mid(sName, cnt, 1) = "!" Then Exit For    Next cnt    rAdd = Mid(sName, cnt + 1, Len(sName))    sName = Mid(sName, 2, cnt - 2)    If Right(sName, 1) = "'" Then     sName = Mid(sName, 2, Len(sName) - 2)     sName = Replace(sName, "''", "'")     sName = Replace(sName, "’’", "’")    End If    Worksheets(sName).Activate    Range(rAdd).Select  End If End Sub

naokichi000
質問者

お礼

早速のお返事ありがとうございます。 同一シートであればPrecedents でとれるんですね! 勉強になります。 色々なパターンを考えてコードを作成して頂いて ありがとうございます。 Formulaを使えば式がとれる事がわかりましたので 作成してみます。 ありがとうございましたm(_ _)m

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

私には意味不明だが 関数ではSheet2!A1と表現するのをVBAでは、どう書くかなら Worksheets("Sheet1").Cells(1,"D")=Worksheets("Sheet2").Cells(1,"A") でしょう。Sheet2のA1の「値」を、Sheet1のD1にいれる。 上記で違うなら、質問の「=Sheet2!A1」の部分を日本語の文章で表現してみてください。

naokichi000
質問者

お礼

早速のお返事ありがとうございます。 わかりにくい質問でごめんなさい セルの式に「=Sheet2!A1」など、別シートの内容を 参照するの式が入力されているんです。 その参照するセルを選択したかったのです。 Set cel = [あるセル] fx = cel.Formula でとれることが分かったので、 やってみます。 ありがとうございました。

関連するQ&A