秘密基地、どこに作った?

エクセルVBAでUserFormを起動した時に自動的に実行される動作を記述したいのですが、
どうすればよいでしょうか?

Private Sub UserForm1_Load()

End Sub

だとだめでしょうか?

A 回答 (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()

といった感じの使い分けをします。
    • good
    • 1

ユーザーフォームがメモリ上にロードされる際に実行されるイベントプロシージャに


UserForm_Initialize()
というものがあります。

ひとつ気をつけなければいけないのですが、このイベントプロシージャはフォームがメモリ上に「ロードされる時に」実行されるのであって、フォームが表示(可視)になった時に実行されるものではない、という点です。
ですから、Hideで非表示にして再びShowで表示した際には実行されません。
    • good
    • 1

 不注意で、よく読んでいませんでした。


>UserFormを起動した時<
ということなので、「起動する」とはどういうことなのか私にはわかりません。
先の回答は何かの参考にしてください。
    • good
    • 0

標準モジュールに


Auto_open プロシージャを書いておきます。

Sub Auto_open()
UserForm1.Show vbModeless
End Sub

userform のイベントプロシージャに処理を書いておきます。
Private Sub UserForm_Initialize()
'ここに書いておく
End Sub
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A