excelのユーザーフォームのイベントではそれぞれ
Initializeイベント(フォームが表示される前)と
Activateイベント(フォームがアクティブになったとき)
のイベントがあり、フォーム上のコントロールの設定値を初期化したい際によく
Initializeイベントを使用しています。
しかし、ワークシート上にアクティブコントロールを設置し、その初期設定をそのワークシートが開いたときに設定したい場合、ワークシートではInitializeイベントがなく、Activateイベントしかないため、他のシートから遷移した場合は、このActivateイベントが発生するのですが、もともとコントロールを設置しているワークシート上で保存、そのブックを起動した際、起動したときに表示されるワークシートでは起動時にはActivateイベントは発生しません。
とりあえず、解決策としてworkbook_openイベントでScreenUpdating = false(画面線画させず)後、activesheet.nameで開いたときのアクティブシート名を変数にセットし、一時的に非表示のワークシートにactiveさせ、その後変数でセットしたワークシート名のワークシートにactiveしその後、ScreenUpdating = trueとして起動時に強引にactiveイベントを発生させています。
これ以外の簡単な方法ってないんですかね。
No.2ベストアンサー
- 回答日時:
抜けていたので補足します。
Call Module1.WsActivateEvent のようにしないといけませんね
例のWsActivateEventはパブリックにする必要があるので
引数を持たせて(ダミーでOK)、ユーザーから直接実行(表示しない)できないようにする必要もあるかと思います。
すみません。
ありがとうございます。結局どうやってもステップ数(行数)はふえてしまいますね。
実は実際にやりたかったことといえば、各シート(複数同じシートがあるとおもってもらえば結構です。)にシートで設定した表の集計をするコマンドボタンを作って各シートほとんど同じ処理(途中一部のみシートの設定の関係上違う処理が入ります。)をしようとしました。
各シートにコマンドボタンを配置してクリック時のイベントプロシジャーを設定し、Callで流そうとしたんですが、シートによって一部処理が異なる箇所があったため、Callステートメントではやりにくいと思い、ユーザークラスモジュールを作成し、Property Set でコマンドボタンのプロパティを作成、その対応する変数にWithEventsを設定し、コマンドボタンのイベントをユーザークラスモジュールでイベントを発生させ、シートごとに違う処理をRaiseEventにてシートモジュールに記述する方式を使用しました。
この場合、シートを読み込む際、作成したクラスモジュールを使用するためNewステートメントでインスタンスを作成し、当該クラスモジュールでのプロパティにコマンドボタンをSetしなければなりません。しかし、このインスタンス作成等をActiveイベントにて設定をしたら、起動時のみこのActiveイベントが発生しなかったので強制的にActiveイベントを起こしたのですが・・・
シートクラスモジュールではシートに設定してあるコマンドボタンはMe.コマンドボタン名で設定しやすいですしね・・
教えていただいたやり方はActiveイベント内処理をCallにてジェネラルプロシジャーに実行させ、同様にWorkBooks_Open時にCallにて同じ処理をするということですね・・・
まあ、どっちもありかな?と思います。しかし、ユーザーフォームと同様なんでシート読み込み時にInitializeイベントないんだろ。
No.1
- 回答日時:
こんばんは、
ブックを開いた時のWorksheet_Activateを使いたいと言う事でしょうか?
的外れの回答かも知れませんが、Worksheet_Activateは引数を持っていないと思いますので、(引数を持っていても同じ)
イベントに書かれているコードを標準モジュールに書きます。
例えば
Sub WsActivateEvent()
hogehoge
End sub
Private Sub Workbook_Open()
Call WsActivateEvent
End Sub
Private Sub Worksheet_Activate()
Call WsActivateEvent
End Sub
この様にすれば処理は、Workbook_Open実行時に直接WsActivateEventを実行出来ると思います。(Worksheet_Activateからも)
ただし、WsActivateEvent 内のコードでActive~の使用は出来るだけ止め各オブジェクトを明示した方が良いかも知れません。
WsActivateEventに引数を持たせればOpenから呼んだ時とWorksheet_Activateから呼んだ時の実行を分ける事も出来るかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Excel(エクセル) excelvbaのenableeventsについて 3 2022/08/30 11:20
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/25 11:42
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
-
4
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
5
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
6
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
7
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
10
UserForm1.Showでエラーになります。
工学
-
11
Excel VBA:フォーム←→セルのアクティブ切り替え
Excel(エクセル)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
14
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
15
VBAでのユーザフォームの表示有無の確認について
Visual Basic(VBA)
-
16
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
17
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
18
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
19
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
20
VBA、UserFormを前面に出力してから処理後にももう一度前面に出したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのVBAにてExcelのシ...
-
Excelマクロ 別シートへ連続コ...
-
excelのInitializeイベントとAc...
-
Excel・Word リサーチ機能を無...
-
配列数式の解除
-
教えて下さい
-
Excel VABについて 下記記述が...
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
一つのTeratermのマクロで複数...
-
Excel マクロでShearePoint先の...
-
UserForm1.Showでエラーになり...
-
Excel マクロ VBA プロシー...
-
エクセルに張り付けた写真のフ...
-
String""から型'Double'への変...
-
マクロで"#N/A"のエラー行を削...
-
メッセージボックスのOKボタ...
-
Excel VBAからAccessマクロを実...
-
Excel_マクロ_現在開いているシ...
-
エクセルで縦に並んだデータを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelのInitializeイベントとAc...
-
ACCESSのVBAにてExcelのシ...
-
Excelマクロ 別シートへ連続コ...
-
VBAでシートをまたぐ処理の方法
-
VBAで繰り返し処理の速度を...
-
「IsText」の使い方を教えてく...
-
エクセルVBAでブックの分割
-
エクセルVBAで名前の決まってい...
-
オートシェイプの不具合について
-
【VBA】3個のワークブックから...
-
ExcelVBAを使っての振り分け処理
-
配列数式の解除
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
教えて下さい
-
UserForm1.Showでエラーになり...
-
一つのTeratermのマクロで複数...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
おすすめ情報