- 締切済み
=sheet1!A1 のA1をボタンを押すとA2、A3、A4と参照先を移動したい
こんにちは、過去の質問を閲覧したのですが見当たらなかったのでこちらで新しく質問させていただきます。 今参照先を変えるのに手入力で数字を変更している状態です。 下記のように =sheet1!A1 のA1をA2、A3、A4 マクロのボタンなどを使って、ボタンをクリックすると参照先を次々下に移動させる方法などがあるのでしょうか? よい方法を知っている方がいましたらよろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。再度、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)
たとえば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)
こんにちは。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)
こんにちは。 もう少し、詳しい状況を教えていただかないと、私には無理ですね。 質問内容から、 >ボタンをクリックすると参照先を次々下に移動させる方法などがあるのでしょうか? ボタンはどこにあるのですか? まだ、ないのですか? =sheet1!A1 の数式は、どこにあるのですか? それとも、シートの中に複数存在しているのですか? 式の内容を換えるということですから、私の方法としては、 Replace で置換するのが一番早いとしても、A1 を取り出して、str1 =A1 として、Range(str1).Offset(1).Address(0,0) として、式に戻すだろうと思います。
- mu2011
- ベストアンサー率38% (1910/4994)
安直ですが以下の方法は如何でしょうか。 例えば、sheet2!A1に=sheet1!A1を設定し、以下にsheet1A2:Anを参照する場合、sheet2!A1のセルにカーソルを合わせると右下に■が表示されますので、マウスでその■をドラッグ(左クリックを押したまま)して下方向に移動すれば、自動的にセル値が変動します。
補足
説明が足りなくて申し訳ありません。 sheet1はsheet2のA3になります。 ボタンはsheet2のA3付近に作る予定です。 sheet2のA3に =sheet1!A1 と入ってます。 A1の数値を変えると、sheet2の帳票が変わるようになっているのですが、その数値を手動で変えるのが大変でしたので・・・・ wendy02さんの数式が参考になりそうです。