電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
現在コンボボックスにリストを設定する方法について悩んでいます。
バージョンはExcel2003です。

コンボボックスに指定したい列がA列とB列なら通常下記のようにすると思います。
    With ComboBox1
      .ColumnCount = 2
      .ColumnWidths = "50;50"
      .RowSource = "Sheet1!A2:B5"
    End With
ただ今回はA列とC列をリストに設定したいと思い、下記のような設定にしたのですがうまく設定できません。
    With ComboBox1
      .ColumnCount = 2
      .ColumnWidths = "50;50"
      .RowSource = "Sheet1!A2:A5;C2:C5"
    End With
そもそもRowSource は連続的なデータを設定する場合のプロパティだと思うのですが、このように飛んだ列のデータを効率的に指定するにはどのようにするのが一番いいのでしょうか?
分かる方がいっらしゃいましたらご教授願います。

A 回答 (1件)

ComboBoxは、あまりRowSourceを取ることはしませんね。

データを書き換える目的がないからですが。

Private Sub UserForm_Initialize()
 Dim Ar()
 Dim rng As Range
 Dim c As Variant, i As Long
 Set rng = Worksheets("Sheet1").Range("A2:A5")
 ReDim Ar(0 To rng.Rows.Count, 1)
 i = 1 'データ初期値 初期値0なら、上のrng.Rows.Count -1 にする
 For Each c In rng
  Ar(i, 0) = c.Value
  Ar(i, 1) = c.Offset(, 2).Value
  i = i + 1
 Next c
 With ComboBox1
  .ColumnCount = 2
  .ColumnWidths = "50;50"
  .List = Ar
 End With
 Set rng = Nothing
End Sub
    • good
    • 0
この回答へのお礼

やはりrousourceはこのような用途には使用しないのですね!
前から悩んでいた事なので本当に助かりました!
ありがとうございました。

お礼日時:2011/02/07 14:15

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