|
皆さん、こんにちは。
Dropdownメソッドについての不可解な現象について・・。
例えば、ユーザーフォーム(Userform1)にコンボボックス(Combobox1)、
テキストボックス(Textbox1)、コマンドボタン(Commandbutton1)という
タブオーダーで配置したとします。
ここで、Userform1を表示させ、いきなり最初にフォーカスを得るコントロールである
コンボボックスのドロップダウンリストを表示させることを考えました。
タブキーを進めていって2順目にコンボボックスにフォーカスが移ったときも同様に
ドロップダウンリストを表示させます。
すぐ思いつくのは、Combobox1のEnterイベントで、
Private Sub ComboBox1_Enter()
ComboBox1.DropDown
End Sub
ですよね?
ところがこれを実行すると、ドロップダウンリストがとんでもないところに
表示されてしまうんです。
それではと思い、今度は、ユーザーフォームのInitializeイベントではと思い
Private Sub UserForm_Initialize()
ComboBox1.DropDown
End Sub
も結果は同じでした。
最後にActivateイベントはどうだろうと思い、
Private Sub UserForm_Activate()
ComboBox1.DropDown
End Sub
やっと正常表示してくれました。
よって、上述の仕様でコンボボックスを動作させるのに
Private FIRST_FLG As Long
'======================
Private Sub AAAComboBox1_Enter()
If FIRST_FLG = 0 Then
FIRST_FLG = 1
Else
ComboBox1.DropDown
End If
End Sub
'==================
Private Sub UserForm_Activate()
ComboBox1.DropDown
End Sub
なんていうコードしないと仕様どおりになりませんでした。
又、「そんなことないよ」なんていうご意見がありましたら、
よろしくお願いします。
|
|