- ベストアンサー
エクセルVBAでUserFormを起動した時
エクセルVBAでUserFormを起動した時に自動的に実行される動作を記述したいのですが、 どうすればよいでしょうか? Private Sub UserForm1_Load() End Sub だとだめでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。お邪魔します。 > UserFormを起動した時 というのが、一意の表現ではないので、 多少混乱しているようですが、 UserFormを読み込んだ時、 にあたるイベントが Private Sub UserForm_Initialize() End Sub UserFormを表示(再表示)した時 にあたるイベントが Private Sub UserForm_Activate() End Sub という感じです。 UserFormを読み込みながら表示する場合、 (UserFormが読み込まれていない状態で、UserForm.Show、など) UserForm_Initialize() の次に UserForm_Activate() が発効します。 UserForm(のインスタンス)が読み込まれてている間、 常に有効にしたいプロパティ設定などは UserForm_Initialize() UserFormを表示した時の条件によって処理を換えたい場合などは UserForm_Activate() といった感じの使い分けをします。
その他の回答 (3)
- MSZ006
- ベストアンサー率38% (390/1011)
ユーザーフォームがメモリ上にロードされる際に実行されるイベントプロシージャに UserForm_Initialize() というものがあります。 ひとつ気をつけなければいけないのですが、このイベントプロシージャはフォームがメモリ上に「ロードされる時に」実行されるのであって、フォームが表示(可視)になった時に実行されるものではない、という点です。 ですから、Hideで非表示にして再びShowで表示した際には実行されません。
- DreamyCat
- ベストアンサー率56% (295/524)
不注意で、よく読んでいませんでした。 >UserFormを起動した時< ということなので、「起動する」とはどういうことなのか私にはわかりません。 先の回答は何かの参考にしてください。
- DreamyCat
- ベストアンサー率56% (295/524)
標準モジュールに Auto_open プロシージャを書いておきます。 Sub Auto_open() UserForm1.Show vbModeless End Sub userform のイベントプロシージャに処理を書いておきます。 Private Sub UserForm_Initialize() 'ここに書いておく End Sub