• 締切済み

 =sheet1!A1 のA1をボタンを押すとA2、A3、A4と参照先を移動したい

こんにちは、過去の質問を閲覧したのですが見当たらなかったのでこちらで新しく質問させていただきます。 今参照先を変えるのに手入力で数字を変更している状態です。 下記のように =sheet1!A1 のA1をA2、A3、A4 マクロのボタンなどを使って、ボタンをクリックすると参照先を次々下に移動させる方法などがあるのでしょうか? よい方法を知っている方がいましたらよろしくお願いいたします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。再度、Wendy02です。 私は、どうも鈍いもので、なかなか理解できませんが、なんとなくイメージを沸きました。インクリメント(増加)でよいのかしらね? 設定の仕方: シートのモジュール(下のシートタブを右クリックして、コードの表示を繰りつく)に貼り付けてから、コントロールツールのボタンをシートに貼り付けます。 そして、今度は、コントロールツールのボタンを右クリックして、コードの表示をクリックして、ボタン側にコードを再認識させます。(A1方式でも、R1C1方式でも可) コード: '<Sheet2のシートモジュール> Private Sub CommandButton1_Click()   Dim 式のセル As Range   Dim oldFml As String   Dim newFml As String   Dim oldAd As String   Dim newAd As String   '---------設定------------   Set 式のセル = Range("A3")   '-------------------------   On Error GoTo ErrMsg   oldFml = 式のセル.FormulaLocal   If InStr(oldFml, "!") > 0 Then    oldAd = Mid$(Mid$(oldFml, 2), InStr(oldFml, "!"))    Else    oldAd = Mid$(oldFml, 2)   End If   newAd = Range(oldAd).Offset(1).Address(0, 0)   式のセル.FormulaLocal = Replace(oldFml, oldAd, newAd)   Exit Sub ErrMsg:   MsgBox Err.Number & ": 式の変更に失敗しました。", vbCritical End Sub

  • big_fool
  • ベストアンサー率22% (43/193)
回答No.4

たとえばSheet1のA列セルを順番にSheet2のA1セルに表示させる場合です、これはブックが開いている間コードを実施させると順に表示されます 質問から外れていたらすみません Private k As Long Sub test() Worksheets("Sheet2").Range("A1").Value = Worksheets("Sheet1").Cells(k + 1, 1) MsgBox ("Sheet1の" & "A" & k + 1 & "を表示します") k = k + 1 End Sub

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 質問の意図は、同じ位置で参照先を変更したいということでしょうか? それなら、やはり、VBAになります。 ですが、一応VBAを使用しない方法を挙げます。 あまり役に立たないかも知れませんが。 仮にSheet2のA1に表示させるとします。 ここで、どこかのセル(仮にSheet2のC1とします。)をボタン替わりにします。 Sheet2のA1に、 =IF(ISERROR(INDIRECT("'Sheet1'!A"&C1)),"",INDIRECT("'Sheet1'!A"&C1)) と入力します。 これで、C1に数字を入力すると、その行数のSheet1のA列の値が参照されます。 あとは、このC1の値を順番に変更していけばいいです。 まあ、 >手入力で数字を変更している 手間をちょっと省いただけなんですけどね。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 もう少し、詳しい状況を教えていただかないと、私には無理ですね。 質問内容から、 >ボタンをクリックすると参照先を次々下に移動させる方法などがあるのでしょうか? ボタンはどこにあるのですか? まだ、ないのですか? =sheet1!A1 の数式は、どこにあるのですか? それとも、シートの中に複数存在しているのですか? 式の内容を換えるということですから、私の方法としては、 Replace で置換するのが一番早いとしても、A1 を取り出して、str1 =A1 として、Range(str1).Offset(1).Address(0,0) として、式に戻すだろうと思います。

maa2525
質問者

補足

説明が足りなくて申し訳ありません。 sheet1はsheet2のA3になります。 ボタンはsheet2のA3付近に作る予定です。 sheet2のA3に =sheet1!A1 と入ってます。 A1の数値を変えると、sheet2の帳票が変わるようになっているのですが、その数値を手動で変えるのが大変でしたので・・・・ wendy02さんの数式が参考になりそうです。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

安直ですが以下の方法は如何でしょうか。 例えば、sheet2!A1に=sheet1!A1を設定し、以下にsheet1A2:Anを参照する場合、sheet2!A1のセルにカーソルを合わせると右下に■が表示されますので、マウスでその■をドラッグ(左クリックを押したまま)して下方向に移動すれば、自動的にセル値が変動します。

関連するQ&A