2011年1月28日金曜日

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

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

  1. Private Sub CommandButton5_Click()  
  2.     UserForm1.ListBox1.Clear  
  3.       
  4.       
  5.     UserForm1.ListBox1.AddItem "青森"  
  6.     UserForm1.ListBox1.AddItem "岩手"  
  7.     UserForm1.ListBox1.AddItem "秋田"  
  8.     UserForm1.ListBox1.AddItem "山形"  
  9.       
  10.     UserForm1.ListBox2.Clear  
  11.       
  12.       
  13.     UserForm1.ListBox2.AddItem "りんご"  
  14.     UserForm1.ListBox2.AddItem "みかん"  
  15.     UserForm1.ListBox2.AddItem "なし"  
  16.     UserForm1.ListBox2.AddItem "もも"  
  17.       
  18.     UserForm1.ListBox3.Clear  
  19.       
  20.       
  21.     UserForm1.ListBox3.AddItem "マグロ"  
  22.     UserForm1.ListBox3.AddItem "カニ"  
  23.     UserForm1.ListBox3.AddItem "エビ"  
  24.     UserForm1.ListBox3.AddItem "タコ"  
  25.       
  26.     UserForm1.ListBox4.Clear  
  27.       
  28.       
  29.     UserForm1.ListBox4.AddItem "さる"  
  30.     UserForm1.ListBox4.AddItem "熊"  
  31.     UserForm1.ListBox4.AddItem "きつね"  
  32.     UserForm1.ListBox4.AddItem "たぬき"  
  33. End Sub  
  34.   
  35.   
  36.   
  37. Private Sub CommandButton2_Click()  
  38.   
  39.    'UserForm1.ListBox1.SetFocus  
  40.     UserForm1.ListBox1.Value = "秋田"  
  41.    'UserForm1.ListBox2.SetFocus  
  42.     UserForm1.ListBox2.Value = "なし"  
  43.    'UserForm1.ListBox3.SetFocus  
  44.     UserForm1.ListBox3.Value = "エビ"  
  45.    'UserForm1.ListBox4.SetFocus  
  46.     UserForm1.ListBox4.Value = "きつね"  
  47.   
  48.     MsgBox "Value:" & Chr(13) & UserForm1.ListBox1.Value & "/" & UserForm1.ListBox2.Value & "/" & UserForm1.ListBox3.Value & "/" & UserForm1.ListBox4.Value  
  49.       
  50.     MsgBox "List(ListIndex):" & Chr(13) & UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex) & "/" & _  
  51.             UserForm1.ListBox2.List(UserForm1.ListBox2.ListIndex) & "/" & _  
  52.             UserForm1.ListBox3.List(UserForm1.ListBox3.ListIndex) & "/" & _  
  53.             UserForm1.ListBox4.List(UserForm1.ListBox4.ListIndex)  
  54.   
  55. End Sub  
valueを設定しても valueが取れない???
おかし過ぎる。

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