dポイントプレゼントキャンペーン実施中!

VBAでのコンボボックスのリストをセルD7~セルの中にデータが空になっている所まで、セルから取得しコンボボックスに入れたいのですが・・
Dim celJ As Integer
 celJ = 4
 Do Until Cells(7,celJ).Value = ""
  ComboBox1.AddItem (Worksheets("表").Cells(7, celJ).Value)
  celJ = celJ + 1
Loop
これでは失敗するのですが、どうすればいいでしょうか?

最初D7には何もデータが入っていません。どんどんD7~からデータを書き込んでいき、コンボボックスにも反映させていきたいのですがアドバイスお願い致します。

A 回答 (4件)

Excelはどのバージョンですか?


エラーになる箇所はどこでしょう? またどのようなエラーなのでしょう

コンボボックスはどちらのですか? コントロールツールボックス or フォーム

D7に何も入力されていないなら Untilの条件が成立しないので Doループに入らないと思いますが ...

このサブルーチンはどこに記述してあるのでしょう?
標準モジュールなら ComboBox1などを特定するのにSheet1などのワークシートオブジェクトが必要ですよ
同様のことがCellsにも言えます...
    • good
    • 0

(1)VBAにも数種あって、どれか標題に書くこと。


読み進むとWorkSheetという言葉があるので、エクセルVBAらしい。
(2)エクセルVBAでは、プロパティにListFiiiRangeがあり、これを使うのが予想されている。
ワークシートのSheet1のG列にリストが有る場合の例
Sub test01()
r = Range("G30").End(xlUp).Row
MsgBox r
MsgBox Range(Cells(2, "G"), Cells(r, "G")).AddressLocal()
Worksheets("Sheet1").ComboBox1.ListFillRange = Range(Cells(2, "G"), Cells(r, "G")).Address
End Sub
Msgboxの行はテスト後削除
必要ならイベントプロシージュアーの赤に入れてください
G30の部分はリストの最下限を見繕って変えてください。
増えた都度実行するならTarget.Rowを使えるでしょう。
ーー
AddItemを使ってやってみました
Sub test02()
r = Range("G30").End(xlUp).Row
MsgBox r
'Worksheets("Sheet1").ComboBox1.ListFillRange = ""
Worksheets("Sheet1").ComboBox1.Clear
For i = 2 To r
Worksheets("Sheet1").ComboBox1.AddItem Cells(i, "G")
Next i
End Sub
ーーー
既出回答でご指摘が有るように、コンボの乗る台紙(コンテナ?)に当たる
(A)ワークシート
(B)ユーザーフォーム(Form)
、グラフシートなどを指定しなければなりません。
上記は(A)の例です。
ーー
(B)UserFormに載せたComboBoxの場合
http://www.excel.studio-kazu.jp/mag2/backnumber/ …
    • good
    • 0

A) D7 から横方向(E7, F7, G7...)に読み込むんですか?



B) どう失敗するのでしょうか?

C) コンボボックスはどこにおいてあるのでしょうか?
どこぞのシートなのかユーザーフォームなのか。
「どんどん書き込んでいき」ってことはシート上ですか?

D) 追加だけですか? D7~G7 に値が入っていてコンボボックスにも反映されているとして、E7 の値を変更した場合もコンボボックスに反映させますか?

基本的にトリガーとしては
A) シートのイベントを使う
B) 入力後、ユーザーがボタンを押すなど、明示的にトリガーを引く
といった感じになると思います。
そしてコンボボックスへの反映は、毎回コンボボックスの全アイテムを削除してから全アイテムを追加しなおす。

"表" という名前のシートの D7 から横方向に入力した値を、同じく "表" シート上にあるコンボボックス "ComboBox1" に反映させる場合は
WorkSheet "表" オブジェクトの Change イベントに
Private Sub Worksheet_Change(ByVal Target As Range)
  ComboBox1.Clear
  Dim j As Integer
  j = 4
  Do Until Cells(7, j).Value = ""
    Me.ComboBox1.AddItem Cells(7, j).Value
    j = j + 1
  Loop
End Sub
てな感じです。
なお html の都合上、上記コードのインデント部分は全角半角を使っても明日のでコピペは注意してください。
    • good
    • 0

こんばんわ


Worksheets("表").Combobox・・・・・・・かな
いきなり Combo じゃないです。
    • good
    • 0

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