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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
あなたの「プチ贅沢」はなんですか?
お仕事や勉強などを頑張った自分へのご褒美としてやっている「プチ贅沢」があったら教えてください。
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
-
4
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
5
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
6
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
7
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
8
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
9
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
10
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
11
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
14
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
15
UserForm1.Showでエラーになります。
工学
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
18
VBAでのユーザフォームの表示有無の確認について
Visual Basic(VBA)
-
19
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
20
Excel VBA:フォーム←→セルのアクティブ切り替え
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでブックの分割
-
VBAでシートをまたぐ処理の方法
-
ACCESSのVBAにてExcelのシ...
-
配列数式の解除
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
一つのTeratermのマクロで複数...
-
教えて下さい
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
お助けください!VBAのファイル...
-
Excel マクロでShearePoint先の...
-
メッセージボックスのOKボタ...
-
VBAでfunctionを利用しようとし...
-
Excel VBAからAccessマクロを実...
-
【VBA】ワークブックを開く時に...
-
ExcelVBAでPDFを閉じるソース
-
エクセルで別のセルにあるふり...
-
Excel_マクロ_現在開いているシ...
-
UserForm1.Showでエラーになり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelのInitializeイベントとAc...
-
ACCESSのVBAにてExcelのシ...
-
Excelマクロ 別シートへ連続コ...
-
「IsText」の使い方を教えてく...
-
VBAで繰り返し処理の速度を...
-
VBAでシートをまたぐ処理の方法
-
エクセルVBAで名前の決まってい...
-
エクセルVBAでブックの分割
-
AccessDB VBA
-
ExcelVBAを使っての振り分け処理
-
Excelで別シートの共通する項目...
-
配列数式の解除
-
特定のPCだけ動作しないVBAマク...
-
教えて下さい
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
UserForm1.Showでエラーになり...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
おすすめ情報