10代と話して驚いたこと

はじめまして。Excel2000でアンケートシートを作りたいと思っています。
その回答をコンボボックスから選ぶようにしたいのですが、「違う質問だけど同じ選択肢」というのがたくさんあるので簡潔にしたいのです。

このサイト等ネットで調べるとコントロールに変数を持たせる方法として
Control(ComboBox & i)とか
Me(ComboBox & i)
というのを目にしましたが、どちらもこの状態には該当しないのかうまくいきませんでした。
コンボボックスごとにソースを作るしかないのでしょうか?
理想としてはforループでコンボボックスの回数だけ回して、if文でComboBox1と3と4と7には○○○、2と5と6には△△△を表示するようにできたらいいなぁと思っています。
(あくまで理想のソースです。)
For i = 1 To 30
If i = 1 Or 3 Or 4 Or 7 Then
With ComboBox & i(←ここが知りたいです☆)
.Clear
.AddItem "非常に重要"
.AddItem "重要"
.AddItem "少し重要"
.AddItem "重要ではない"
End With
ElseIf i = 2 Or 5 Or 6 Then
With ComboBox & i(←ここが知りたいです☆)
.Clear
.AddItem "はい"
.AddItem "いいえ"
End With
End If
Next i

いかがでしょうか?☆部分をどうにかすることで解決するのでしょうか?他に方法があったらぜひご教示ください。
そもそもコンボボックスの作り方にも自信がありません。
以前に少しだけVBを経験してますが、ほぼ初心者です。
よろしくお願い致します。

A 回答 (2件)

シート上のコントロールはちょと扱いが違うところがあります。



「新しいブック」で以下をお試しください。

●Sheet1 に ComboBox を5個配置

●Sheet2 にComboBox表示用リストを作成
  A1:A4 に "非常に重要"、 "重要"、 "少し重要"、"重要ではない"
  B1:B2 に ”はい"、"いいえ"

そして次のコードを「標準モジュール」にコピペし、実行。

------------------------------------------------
Sub Test()

 Dim i As Integer

 For i = 1 To 5

   With Sheets("Sheet1").OLEObjects("ComboBox" & i)

      Select Case i
        Case 1, 3, 5
           .ListFillRange = "Sheet2!A1:A4"
        Case Else
           .ListFillRange = "Sheet2!B1:B2"
      End Select

   End With

 Next i

End Sub
---------------------------------------------

尚、本番ではこのコードは、
ThisWorkbookモジュールの、WorkBook_Openイベントで実行することは、言うまでもありません。

以上です。
 
    • good
    • 0
この回答へのお礼

onlyrom様
ご丁寧な説明ありがとうございます。
こんなやり方があるとは初めて知り、勉強になりました!!
テストしてみましたが、できました☆☆☆
本番でも活用したいと思います。
また何かありましたらよろしくお願い致します。

お礼日時:2006/09/01 10:42

>Control(ComboBox & i)



疑似コントロール配列という方法です。
VBAではVBのようなコントロール配列が使えないので、このような方法になります。

>With ComboBox & i

と指定してもコントロールの指定はできません。
With Control("ComboBox" & i)
のように、Control("オブジェクト名") でコントロールが認識されるようになります。


http://www.h3.dion.ne.jp/~sakatsu/Breakthrough_P …
    • good
    • 0
この回答へのお礼

hana-hana3様
ご丁寧に説明いただきありがとうございます!!
早速実践してみたところ、
Controlのところでコンパイルエラーが出て、
SubまたはFunctionが定義されていません。
と言われます。
フォームを作ってないからできないのでしょうか?
(現在はシートに直接コンボボックスを貼ってます)
もし、そうだとしたらフォームを作ってないと
擬似コントロール配列は使えないのでしょうか?
ご教示いただければ幸いです♪

お礼日時:2006/08/31 10:19

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


おすすめ情報