- ベストアンサー
シートの移動ボタン(エクセルVBA)
表示するSheetを変えるボタンを作っています。宜しくお願いします。 ファイル(1)のSheet1~Sheet5 と Sheet7 のそれぞれのシートにSheet6へ行くボタンを作っています。 「WorkSheets("Sheet6").Activate」でしています。 で、Sheet6には戻るボタンを作りたいのですが、どこのシートから来たのかを認識して、該当シートへ戻るようにしたいのですがどのようにしたらよいでしょうか?(シート6へ行くボタンを押したシートに戻る) 更に、同様の処理が、WorkBook間でも処理ができるようにしたいのです。 ここは、「WorkBooks(ファイル(2).Xls)WorkSheets(”Sheet1”).Activate」をファイル(1)の各シートに書いて処理させています。ここから戻るボタンの方法もお願いします。 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Public fukkiSheetNo As Integer '復帰するシート番号 を標準モジュールに書いていませんか? 以前の終了ボタンと同じで、ThisWorkbookのコードウインドウに貼り付けます。2つのブックの開き方も終了ボタンの時と同じです。終了ボタンがうまくいっていればこれも同じ理屈ですが・・・
その他の回答 (4)
- nishi6
- ベストアンサー率67% (869/1280)
移動Book1.xls(シート1~7)、移動Book2.xls で書きました。ファイル名は変更してください。 'シート1~5、7にはボタン2個。各シートのコードウインドウに貼り付けます。 Private Sub cmdJump6_Click() 'シート6に行くボタン Workbooks("移動Book1.xls").fukkiSheetNo = Right(Me.Name, 1) Worksheets("Sheet6").Activate End Sub Private Sub cmdJumpBook2_Click() 'ブック2に行くボタン Workbooks("移動Book1.xls").fukkiSheetNo = Right(Me.Name, 1) Workbooks("移動Book2.xls").Worksheets("Sheet1").Activate End Sub 'シート6はボタン1個。シートのコードウインドウに貼り付けます。 Private Sub cmdFukki_Click() '元のシートに復帰するボタン Dim jmpNo As Integer '復帰するシート番号 jmpNo = Workbooks("移動Book1.xls").fukkiSheetNo Worksheets("Sheet" & jmpNo).Activate End Sub 'ThisWorkbookのコードウインドウに貼り付けます。これをBook2から参照する。 Public fukkiSheetNo As Integer '復帰するシート番号 'ブック2のシート1のコードウインドウに貼り付けます。 Private Sub cmdJumpBook1_Click() Dim jmpNo As Integer '復帰するシート番号 jmpNo = Workbooks("移動Book1.xls").fukkiSheetNo Workbooks("移動Book1.xls").Worksheets("Sheet" & jmpNo).Activate End Sub
補足
ありがとうございます。 早速試してみましたが、 Workbooks("移動Book1.xls").fukkiSheetNo = Right(Me.Name, 1) でのところで止まります。 ”オブジェクトは、このプロパティまたはメソッドをサポートしていません。” と出ます。なぜでしょう???????? ファイル名は、自分のものに変えました。よろしくお願いします。
- gould09
- ベストアンサー率33% (196/589)
>ファイル(1)のSheet1~Sheet5 と Sheet7 のそれぞれのシートにSheet6へ行くボタンを作っています。 >「WorkSheets("Sheet6").Activate」でしています。 >で、Sheet6には戻るボタンを作りたいのですが、どこのシートから来たのかを認識して、該当シートへ戻るように >したいのですがどのようにしたらよいでしょうか?(シート6へ行くボタンを押したシートに戻る) 考え方だけ説明の為に書きましたので、きたない書き方になってます。 ■Sheet1(シート6に移動する) Private Sub CommandButton1_Click() Sheets("Sheet6").Select Sheets("Sheet6").Cells(1, 1).Value = "Sheet1" ←実際にはCells(1, 1)にワークの情報を書いたら邪魔 になるので、邪魔にならない場所に書く End Sub ■Sheet2(シート6に移動する) Private Sub CommandButton1_Click() Sheets("Sheet6").Select Sheets("Sheet6").Cells(1, 1).Value = "Sheet2" ←実際にはCells(1, 1)にワークの情報を書いたら邪魔 になるので、邪魔にならない場所に書く End Sub ■Sheet3~5も同様 ■Sheet6 (呼ばれたシートに戻る所) Private Sub CommandButton1_Click() Sheets(Cells(1, 1).Value).Select End Sub >更に、同様の処理が、WorkBook間でも処理ができるようにしたいのです。 >ここは、「WorkBooks(ファイル(2).Xls)WorkSheets(”Sheet1”).Activate」をファイル(1)の各シート >に書いて処理させています。ここから戻るボタンの方法もお願いします。 上記と同じ考え方で、ファイル名のセルを追加します。 試しに、確認用のマクロを書いて見たら1回目はうまく動きましたが、2回目以降は、既に開いているEXCELシート をまた、開きに行くので確認メッセージが出てしまいました。(出さない為の指定方法とか有るかもしれないが調べていません、分からないようでした質問してください。その時調べます。) この問題は、別問題なので取りあえず参考にして下さい。
補足
ありがとうございます。うまくいきました。 >2回目以降は、既に開いているEXCELシートをまた、開きに行くので確認メッセージが出てしまいました。 については、もう少しじっくり考えてみます。
- kbonb
- ベストアンサー率51% (254/492)
こんにちは 以下のページがご参考になるのでは? 【エクセル技道場】-ツールバー-マクロでツールバー作成 http://www2.odn.ne.jp/excel/waza/toolbar.html#SEC18
- gould09
- ベストアンサー率33% (196/589)
移動先のシートの見えないセルに、どこから呼ばれたか書いておいたらどうでしょうか?(WorkBook名とシート名)
補足
すみません!まだまだ初心者なので、どこからどうしたら呼ばれたかを書く方法が分かりません。よろしかったら、詳しくお願いできませんか?
お礼
すみませんでした!ファイル名をタイプしていました。本当にすみません!お恥かしい次第です。 ばっっっっりちOKです。 ありがとうございました。