- ベストアンサー
直前に作業していたシートに戻る方法
- 直前に作業していたシートに戻る方法
- 直前に作業していたシートに戻るためのマクロがあるかどうかについてお聞きしたいです。現在は複数のマクロが必要であり、操作が煩雑ですが、1つのボタンですぐに直前のシートに戻れる方法があれば教えていただきたいです。
- 直前に作業していたシートに戻るための効率的な方法について教えてください。現在は4つのマクロを使用しているため、操作が煩雑です。直前のシートに戻れるマクロがある場合は、1つのボタンで実行できるようにしたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
標準モジュールを作成し Module1に Public mSheetName As String を宣言 ThisWorkbookに Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) mSheetName = Sh.Name End Sub そして 1個のボタンのマクロに Sheets(mSheetName).Select としてください。
その他の回答 (2)
- kmetu
- ベストアンサー率41% (562/1346)
ボタンを作成したらマクロの登録が開くと思います そのままでボタン数値_Clickになっていると思いますので そこで新規作成をすると以下のVBEが開きます。 Sub ボタン数値_Click() End Sub となりますのでその中に Sheets(mSheetName).Select を記入してください。 もしくは適当なマクロを作成しそれを登録してください。 Sub mRev() Sheets(mSheetName).Select End Sub とか作ってボタンのマクロに登録する > それと、実際のファイルで行う場合ですが、Module1、Module2、Module3、Module4とマクロで使用していますが、1つずつずらして、必ずModule1を使用しないと駄目でしょうか。なお、実験はModule1で行っています。 既にModule1があるのでしたら新たに作らなくても (Module1でなくても標準モジュールのどれかでいいです) Module1の一行目に(一番上) Public mSheetName As String を記入してください。 ここに記入することでどこからでも参照できる変数になります。
お礼
できました、どうもありがとうございます。 助かりました。 動いたときには感動しました。
- cistronezk
- ベストアンサー率38% (120/309)
どうしてシートの選択(クリック)では駄目で、わざわざマクロのボタン4つを用意する必要があったんですか?
補足
ありがとうございます。 話を単純化するために移動したいとだけ書いたのですが、 実際は、シート1に設置したマクロで、シート1関連のCSVファイルをシート5に読み込んでおり、 シート5を眺めた後シート1に戻るときに、B列以降のデータを削除しています(A列にはマクロのボタンがあるので残しています)。 削除して1に移動するマクロ、削除して2に移動するマクロ、削除して3に移動するマクロ、削除して4に移動するマクロということです。 4つのボタンだと間違って押してしまいそうなので、確実に元のシートに戻りたいので1つのマクロにしたいです。 よろしくお願いします。
補足
どうもありがとうございます。 以下の手順で行いましたがボタンに登録できませんでした。 新しいブックで行いました。 Visual Basicを開きます。 挿入-標準モジュール そのModule1に Public mSheetName As String と入力しました。 ThisWorkbookに Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) mSheetName = Sh.Name End Sub と入力しました。 Sheet3にボタン(フォームコントロール)を作成しました。 マクロの登録で Sheets(mSheetName).Select と入力すると、入力した数式は正しくありません。 と出ます。 ------------- それと、実際のファイルで行う場合ですが、Module1、Module2、Module3、Module4とマクロで使用していますが、1つずつずらして、必ずModule1を使用しないと駄目でしょうか。なお、実験はModule1で行っています。 よろしくお願いします。