2011年1月28日金曜日

Excel VBA ListBox バグ valueの値設定取得がおかしい

Excel VBA でフォームを作成しリストボックスを設置した場合、
ある条件下(複数のListBox 3以上?)で List.valueを設定しても、List.valueに値がはいらない

Private Sub CommandButton5_Click()
    UserForm1.ListBox1.Clear
    
    
    UserForm1.ListBox1.AddItem "青森"
    UserForm1.ListBox1.AddItem "岩手"
    UserForm1.ListBox1.AddItem "秋田"
    UserForm1.ListBox1.AddItem "山形"
    
    UserForm1.ListBox2.Clear
    
    
    UserForm1.ListBox2.AddItem "りんご"
    UserForm1.ListBox2.AddItem "みかん"
    UserForm1.ListBox2.AddItem "なし"
    UserForm1.ListBox2.AddItem "もも"
    
    UserForm1.ListBox3.Clear
    
    
    UserForm1.ListBox3.AddItem "マグロ"
    UserForm1.ListBox3.AddItem "カニ"
    UserForm1.ListBox3.AddItem "エビ"
    UserForm1.ListBox3.AddItem "タコ"
    
    UserForm1.ListBox4.Clear
    
    
    UserForm1.ListBox4.AddItem "さる"
    UserForm1.ListBox4.AddItem "熊"
    UserForm1.ListBox4.AddItem "きつね"
    UserForm1.ListBox4.AddItem "たぬき"
End Sub



Private Sub CommandButton2_Click()

   'UserForm1.ListBox1.SetFocus
    UserForm1.ListBox1.Value = "秋田"
   'UserForm1.ListBox2.SetFocus
    UserForm1.ListBox2.Value = "なし"
   'UserForm1.ListBox3.SetFocus
    UserForm1.ListBox3.Value = "エビ"
   'UserForm1.ListBox4.SetFocus
    UserForm1.ListBox4.Value = "きつね"

    MsgBox "Value:" & Chr(13) & UserForm1.ListBox1.Value & "/" & UserForm1.ListBox2.Value & "/" & UserForm1.ListBox3.Value & "/" & UserForm1.ListBox4.Value
    
    MsgBox "List(ListIndex):" & Chr(13) & UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex) & "/" & _
            UserForm1.ListBox2.List(UserForm1.ListBox2.ListIndex) & "/" & _
            UserForm1.ListBox3.List(UserForm1.ListBox3.ListIndex) & "/" & _
            UserForm1.ListBox4.List(UserForm1.ListBox4.ListIndex)

End Sub
valueを設定しても valueが取れない???
おかし過ぎる。

回避策:List(ListIndex)で値を取得。。
又は valueのセット時にそれぞれSetFocusしながらセットする。