VBAについて
シートが3つあり、それぞれ同じマクロのボタンがあります。
内容は非表示、再表示にするマクロです。
そして最後に1番左のシートをActiveにして
A2にある数字を7にするというものです。
(A2は実績をVlookupで抽出するときの行番号となっています。一番左のシートのA2を変更すると他のシートも計算式で行番号が変わるしくみです。)
一番左のシートでマクロを実行する時は問題ありませんが、例えば2つ目のシートでマクロを実行した場合、非表示・再表示を行った後、一番左のシートをアクティブにしてA2の数字を変更する為、実行後は一番左のシートがアクティブで終了になってしまいます。
一番左のシートを数字変更した後は
マクロを実行したシート(上の場合は2つ目のシート)を
アクティブにしたいのですが、どのようにしたら良いでしょうか?
説明不足でわかりづらければ申し訳ありません。
宜しくお願いします。
No.3
- 回答日時:
マクロを実行した際のアクティブなシート番号を取得しておいて、最後にそのシートをまたアクティブにすれば良いのでは?
Dim i As Integer
i = ActiveSheet.Index
' ~何かする
Worksheets(i).Activate
『非表示・再表示』がシートを切り替えての作業を意味するのか、またはシート自体を隠す目的があり必要時に再表示するのかなどについては不明ですけどね?
No.2ベストアンサー
- 回答日時:
こんにちは
実際のコードの記載がないので、ご質問文からの想像ですが・・・
作成なさっているマクロには
Worksheets("○〇").Activate
とか、
Range("△△").Select
などといった記述がされているのではないかと推測します。
No1様も指摘なさっていますが、大抵のマクロではこのような「Activate」、「Select」といった記述をしなくても、同様の処理を行うことが可能です。
むしろ、そのような記述法にした方が処理効率は良くなりますし、マクロ実行中に「画面がチラチラする」ような現象も起きずに済みます。
ご質問文を読む限り
・非表示、再表示にする
・1番左のシートのA2を7にする
という内容なので、実行前のシートから移動することなく処理が可能と推測します。
例えば、A2の値を7にする処理を例にすれば
Worksheets(1).Range("A2").Value = 7
の1行で済みますし、これなら表示シートが移動することもありません。
非表示/再表示 に関しても同様ですが、こちらは内容が不明なので、具体例は示せません。
No.1
- 回答日時:
「1番左のシートをActiveにしてA2にある数字を7にする」となっていますが「1番左のシートをActive」にしないといけない理由は何でしょうか?
一般的には次のようにされれば問題ないと思います。
Dim アクティブシート名 As String
アクティブシート名 = ActiveSheet.Name
' A2にある数字を7にする等の処理
Sheets(アクティブシート名).Select
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel_マクロ_複数のシートのVLOOKUPで表示された#N/A以外に色付けをしたいです 1 2023/02/16 22:37
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Visual Basic(VBA) 【ExcelVBA】動的にボタン、ボタン名を生成できますか? 7 2022/04/08 12:54
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/06/19 10:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
Excelマクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
実行時エラー1004「Select メソ...
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
VBAでオブジェクト変数にsetし...
-
VBA 最終行まで数式をコピーする
-
エクセルVBA Ifでシート名が合...
-
VBA 検索して一致したセル...
-
ブック名、シート名を他のモジ...
-
Excel マクロについての相談
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報