|
KAZ さん、こんにちは
私もやってみました。
KAZさんのおっしゃるように、動作したのでビックリしました(@_@)
でも、ステップ実行してみて判ったのですが、
Downキー,Upキーを押すだけで、ListIndexの値は変化するので、
KeyDownイベントの中で、ListIndexの値を触っても、イベントを抜ける際に、
その値からまたプラス、マイナスされるようです。
ので、こんなやりかたはどうでしょうか?
'==============================================
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem ""
.ListIndex = 0
End With
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With ComboBox1
Select Case KeyCode
Case 40
If .ListIndex = .ListCount - 2 Then
.ListIndex = -1
End If
Case 38
If .ListIndex = 0 Then
.ListIndex = .ListCount - 1
End If
End Select
End With
End Sub
'==============================================
Downキーの時は、リストの最後に来た時に、ListIndexを-1に設定します。
そしたら、抜ける時に「0」になります。
Upキーの時は、リストの最初に来たときに、ListCountを設定出来たらいいんだけど、それだとエラーになるので、苦肉の策で、リストの最後に空白をリストしました。
説明が難しい(>_<) わかるかなー?
もっとスマートなやりかたがあるかもしれないけど、
私にはこれぐらいしか思いつかないですにゃ。
|
|