|
実際に、実装レベルで、InitializeとActivateで、どうなっているかはうかがい知れませんが
ユーザーフォームが表示されて機能する部分と表示前に機能する部分は、なんとなく勘(?)。
勘がはずれても、やってみれば、あぁ、こうなんだと。
SendKeysに関しては、ichinoseさんから回答があるように、
実行はキュー(っていうんでしょうか?)に入っていて、表示されたときに、
キーストロークがそのフォームにぶつけられるんでしょうね。
たとえば、StartupPositionが1のユーザーフォームで
Private Sub UserForm_Initialize()
MsgBox "Init:" & Me.Left
End Sub
Private Sub UserForm_Activate()
MsgBox "Act:" & Me.Left
End Sub
Initializeは、メモリーに呼びこまれただけでひょうじされていませんので 0 ですね。
表示されて初めて実際の値が取得できます。
また、
Private Sub UserForm_Initialize()
MsgBox "Init"
Unload Me
End Sub
これだと エラーになりますね。
Private Sub UserForm_Activate()
MsgBox "Act"
Unload Me
End Sub
Initializeが完了して初めて Unload が可能になるようです。
また、
Private Sub UserForm_Initialize()
MsgBox "Init"
Me.Hide
End Sub
Private Sub UserForm_Activate()
MsgBox "Act"
Me.Hide
End Sub
Initialize では表示されていないので、Hideもなにも、あったものではないんですが
実際にInitializeでは機能していないことが、Activateで表示されたときにわかりますね。
|
|