これ何て呼びますか Part2

今同じ内容を表示するコンボボックスを二つ作ろうと思っているのですがつくり方がわかりません。
どのようにすれば一つのプログラムで二つのコンボボックスを作れるのでしょうか
例:
表示では
はい
いいえ
プログラム:
Private Sub UserForm_Initialize()
ComboBox1.AddItem "はい"
ComboBox1.AddItem "いいえ"
End Sub
Private Sub UserForm_Initialize()
ComboBox2.AddItem "はい"
ComboBox2.AddItem "いいえ"
End Sub
↑のような作り方ではなく簡略化して
Private Sub UserForm_Initialize()
ComboBox●.AddItem "はい"
ComboBox●.AddItem "いいえ"
End Sub
●部を変更できれば一つのプログラムでコンボボックスを2つ操作できると思うのですがどのようにすればよろしいでしょうか?

A 回答 (5件)

Private Sub UserForm_Initialize()


ComboBox1.AddItem "はい"
ComboBox1.AddItem "いいえ"
ComboBox2.AddItem "はい"
ComboBox2.AddItem "いいえ"
End Sub

ではダメなのでしょうか。
    • good
    • 0
この回答へのお礼

言葉たらずで申し訳なかったのですが。

その方法だと同じComboBoxを10個作ったりした時など、
文章がかなり長くなって見えにくくなってしまうと思ったんで
実施してません。
他に方法がなければその方法で実施したいと思います。

お礼日時:2008/06/11 07:45

ComboBox1からComboBox10までの場合


Private Sub UserForm_Initialize()
ComboBox1.Clear
ComboBox1.AddItem "はい"
ComboBox1.AddItem "いいえ"
Dim i As Integer
For i = 2 To 10
Me.Controls("ComboBox" & i).List = ComboBox1.List
Next
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
色々とコメントを頂いた結果この方法で試したいと思います。

お礼日時:2008/06/14 12:47

Private Sub UserForm_Initialize()


ComboBox1.Clear
ComboBox1.AddItem "はい"
ComboBox1.AddItem "いいえ"
ComboBox2.List = ComboBox1.List
ComboBox3.List = ComboBox1.List
ComboBox4.List = ComboBox1.List
End Sub
    • good
    • 0

関数にしてやればいいんじゃないですか?



Private Sub initCombo(oCombo As msforms.ComboBox)
'エラーになる場合は"msforms.ComboBox"を"object"にしてみましょう
oCombo.AddItem "はい"
oCombo.AddItem "いいえ"

End Sub
Private Sub UserForm_Initialize()
call initCombo(ComboBox1)
call initCombo(ComboBox2)
call initCombo(ComboBox3)
'....
End Sub

#2さんの方法だと、(コンボボックスのみというif文はありますが)
すべてのコントロールが対象になりますね。
つまり3つあるコンボボックスから、2つだけこの操作をしたい、というような場合には不向きです。
(if文の条件を変えればいいでしょうけど、効率が悪いです)
また、この例ではコントロールの名前に依存しています(正しくはtypename()です)し、
Like演算子は「あいまい」な演算子であるため、あまり使わない方がいい演算子です。

ただ#2さん紹介のコードの「ForEachでコントロールを列挙する」というエッセンスは非常に有益ですので、この機会に覚えておくといいですよ。
    • good
    • 0

言語の記述がないので憶測ですが、エクセルVBAでコントロール配列のような事を期待されているのであれば、茨の道となります



が不可能ではありません
http://www.h3.dion.ne.jp/~sakatsu/Breakthrough_P …


そうではなく、コントロールの設定を簡単に済ます為の方法であれば、おあつらえ向きのがあります
Private Sub UserForm_Initialize()
  Dim MyItem
  For Each MyItem In Me.Controls
    If MyItem.Name Like "ComboBox*" Then
      With MyItem
        .AddItem = "はい"
        .AddItem = "いいえ"
        .ListRows = 2
        .Value = "はい"
      End With
    End If
  Next MyItem
End Sub

Ifの部分次第で、TextBoxでもLabelでも、また"*"を変えたり、Ifをさらにネストしたり、あるいはIfの代わりにSelect Caseを使って複数コントロールに対応させたりなんて事も出来ますよ
なんせ"文字"なんで…^^;

上のようにすれば他のステータスも一緒に設定できて、結構便利ですよ
お試しを
    • good
    • 0
この回答へのお礼

言葉足らずで申し訳ありません。

言語はEXCEL VBAです。

このようなやり方でできるんですか?
試しに実施してみたいと思います。

お礼日時:2008/06/11 07:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報