[PR]今日のニュースは
「Infoseek モバイル」

VBA閻魔帳 実用編

Controlsプロパティを使って記述の簡略をしよう

フォームを作成して記述するとき、罠におちいったのは、

 "ComboBox" & "i" 
 
 あるいは
  
 ComboBox & "1"

 といった使え方ができるのではないかと思い、いろいろと試行錯誤してみたのですが
 どうもこうもうまくいかん。
 
 結局仕方がないので、次のような書き方をしておりました。
 
 ComboBox1.AddItem "A"
 ComboBox1.AddItem "B"
  ・
  ・
 ComboBox2.AddItem "A"
 ComboBox2.AddItem "B"
  ・
  ・ 
 ComboBox3.AddItem "A"
 ComboBox3.AddItem "B"
  ・
  ・
 ComboBox2.AddItem "A"
 ComboBox2.AddItem "B"
  ・
  ・ 
まぁ これでも 結果はおなじなのですが、記述がやたら長くなるのでほとほと困っておりました

或る日、電脳oyajiさんに教えてもらったのが次の.Controlsプロパティです

oyajiさんが神様に思えましたな^^


上の記述を次のようにまとめることができます

例1

For i = 1 To 3
  With Me.Controls("ComboBox" & i) ' With Controls("ComboBox" & i)でも可
   .AddItem "A"
   .AddItem "B"
   .AddItem "C"
   .AddItem "D]"
  End With
 Next

(ME.はなくてもOKです。小生あまり詳しいことはわかりませんが MEを使用するひとが多いです
 なくてもERRORにはなりません)

例2

For i = 1 To 3
  With Me.Controls("ComboBox" & i) 
   Worksheets(1).Cells(i,1)=.value
  End With
 Next

 コンボボックスの値をエクセルのシートのセルに値を代入したいときには
 このような記述をすると すっきりしていいのではないでしょか^^