• ベストアンサー

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

こんばんは マクロ初心者の者です。 あるセルに別シートを参照する式が 入力されています。 「=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/17068)
回答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

  • エクセルで5セルごとに参照したい。

    エクセルで、 あいうえおかきく...等とセルが一列に並んでいる時に、 そのセルへ式を使って入力するのに参照したい別の行があります。 ア□□□□イ□□□□ウ□□□□…という風に、5セルごとに参照したい列があります。 セルあ「VLOOKUP($A1,Sheet1!$A:$Z,1,FALSE)」 セルい「VLOOKUP($A2,Sheet1!$A:$Z,6,FALSE)」 セルう「VLOOKUP($A2,Sheet1!$A:$Z,11,FALSE)」 上のような感じで、でもいちいち数字を入力せずに、セルの左下を引っ張ったらうまく参照されるような式、ないでしょうか。。。

  • エクセルのマクロでセル選択するには

    初心者です! エクセルのSheet1に30箇所のセルをマクロで選択したいのですが、 たまに選択するセルが変わります。 そこで、Sheet2のA1から下へSheet1の選択する位置を「B2」「C5」「D10」・・・としてマクロで一発で30箇所のセルを選択する方法を教えてください Sheet2のA1から下へ入力するセル位置はその都度変化します。 変化したときにそのマクロを実行すると選択できるといいのですが!! よろしくお願いします。

  • エクセルのセル参照、一つずつ参照セルをずらしていきたい

    エクセルのセル参照の方法について教えてください。 2つのシートがあって、 ひとつのシートにはC4,D5,E6…というように行と列がひとつずつ増えていくところに値が入力されています。 このシートから、C4,D5,E6…のセルの値を取り出して 別のシートのA1,A2,A3…に縦に並んで表示させたいのですが、どのようにセルを参照させればC4,D5,E6…という 行と列がひとつずつ増えていくセルを参照できるでしょうか? よろしくお願いいたします。

  • グラフ要素のセルを参照したいのですが・・・

    こんにちは! マクロ初心者の者です。 散布図の1要素を選択し、 ショートカットキーにてマクロを実行すると、 選択したグラフ要素が参照している 参照先セルを選択したいのです。 マクロをショートカットキーに割り当てる方法は なんとかわかったのですが、グラフの1要素の 参照先セルを選択する方法がわかりません・・・ どなたか教えてください。

  • エクセルでのセルの参照

    sheet1にデータが入力されています。 そしてsheet2ではそのsheet1に入っているデータを 抽出するsheetとして使用しています。 そこで、sheet2にある一つのセルに3と入力したら sheet1で使用しているA3、B3、C3、D3・・・ のセルのデータを、 4と入力したら A4、B4、C4、D4・・・ のセルのデータをsheet2のそれぞれのセルに引っぱってこれるように 関数を書きたいと考えています。 INDIRECTが機能的に近いのかなと考え、式を試してみたのですが なかなかうまくいきません。 また、4と入力したときにA5、B5、C5、D5を参照するというように 数値をいじったりできるであればそれも教えていただきたいです。 よろしくお願いいたします。

  • エクセルのセル参照について

    例えば、Sheet1のA1に「1」、A2に「2」、A3に「3」と入力して、 Sheet2のA1に、「1、2、3」と表示させたいのですが、可能でしょうか? 単に一つのセルを参照するだけなら出来ますが、複数のセルを参照することが出来るのでしょうか? よろしくお願いします。

  • ExcelのマクロによるVLOOKUPの参照シートの変更について

    ExcelのマクロによるVLOOKUPの参照シートの変更について ブックAのSheet1のセルA1にドロップダウンリストを作成し、アルファベットの"J"、"M"、"A"が選択できるようにしてあります。 ブックAのSheet2のセルB1には、以下の式が入力してあり、別のブック(ブックB)から情報を読み込んでいます。 =VLOOKUP(A1,'¥¥s_g¥欠席¥[ブックB.xls]国語'!$B$4:$V$30,4,FALSE) やりたい事は↓ ブックAのSheet1のセルA1にある、ドロップダウンリストを変更すると、ブックAのSheet2のセルB1にある式(上記式)の参照シート(上記式では「国語」の部分)が変更さえるマクロを作りたいのですが、うまくできません。 ちなみに、ドロップダウンリストの"J"を選択した場合は、ブックBのシート"国語"を参照し、リストの"M"を選択した場合は、ブックBのシート"数学"を参照し、リストの"A"を選択した場合は、ブックBのシート"美術"を参照するようにしたいです。 よろしくお願いします。 また、マクロを使わずして出来るようでしたら、その方法も合わせて教えて下さい。

  • excelの参照について

    excelの参照について 初心者です。 1枚目のシートの情報を2枚目以降のシートに参照させたいのですが それぞれのシートの同じセルに シート2枚目には A1のセルを参照させ シート3枚目には A2のセル シート4枚目には A3のセル・・・ という具合にシートが進む毎に一つずつ下段のセルを参照させたいのですが シート1枚ごとに手で一つずつ入力するのではなく なにか一括して入力する方法はありますでしょうか? よろしくお願い致します。

  • Excelで参照先のセルを追加してもOKのマクロを組みたい

    Excelのマクロについて質問です。 参照先のセルを追加してもOKのマクロを組みたいのです。 たとえば _ A 1 2 3 4 あ 5 い 6 ん という表を作ったとして Range("A1:A3").Select Selection.Validation.Add Type:=xlValidateList, Operator:= _ xlBetween, Formula1:="=$A$4:$A$6" これでセルA1~A3に「あ」「い」「ん」 のいずれかを選択できますよね。 しかし「い」と「ん」の間に新たに「う」「え」「お」 などと追加しても セルA1~A3に「あ」から「ん」までを参照できるようにしたいのです。 マクロについては 最近になって独学を始めたばかりの初心者です。 先日もこちらで質問させていただいたところ 明確なお答えがあり とても助かりました。 今回もよろしくお願いいたします。

  • セル参照先のアドレスから一定値離れたセルの参照

    エクセルで、セル参照先のアドレスを使って、そのアドレスから一定列離れたセルの値を得たいのです。 たとえば、以下のような処理をマクロを使わずに行うことは可能でしょうか? A1にはセル参照(=A2)が入力されています。 B1に、何らかの数式で、A1での参照先(A2)から3列右側のセル値(D2)を参照したいのです。 (offset を使うのかと思いますが、この場合、基準セルの指定をどうすればよいかわかりません。)      A   B   C  D ---------------------------- 1   12    9    (=A2)  (=?) 2   12           9 よろしくお願いいたします。

専門家に質問してみよう