![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
Excelはどのバージョンですか?
エラーになる箇所はどこでしょう? またどのようなエラーなのでしょう
コンボボックスはどちらのですか? コントロールツールボックス or フォーム
D7に何も入力されていないなら Untilの条件が成立しないので Doループに入らないと思いますが ...
このサブルーチンはどこに記述してあるのでしょう?
標準モジュールなら ComboBox1などを特定するのにSheet1などのワークシートオブジェクトが必要ですよ
同様のことがCellsにも言えます...
No.3
- 回答日時:
(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/ …
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?5a7ff87)
No.2
- 回答日時:
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 の都合上、上記コードのインデント部分は全角半角を使っても明日のでコピペは注意してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。 6 2023/03/21 16:12
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) ExcelVBAでユーザーフォームでテキストボックスなどからセルに連続して入力するコーディングの際の 2 2022/06/29 22:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
別のシートから値を取得するとき
-
実行時エラー'1004': WorkSheet...
-
excelのマクロで該当処理できな...
-
コマンドボタンをクリックでシ...
-
エクセルで通し番号を入れてチ...
-
特定の文字を含むシートだけマ...
-
VBA 存在しないシートを選...
-
シートが保護されている状態で...
-
ExcelのVBAのマクロで他のシー...
-
セルのコピーで「オブジェクト...
-
VBA 入力月で該当シートを選択...
-
エクセルのシート名変更で重複...
-
VBA 別ブック(シート)の同...
-
VBAエクセルの非アクティブシー...
-
userFormに貼り付けたLabelを変...
-
【VBA】特定の文字で改行(次の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAで大量のファイルをシート名...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】Worksheets().Act...
-
ブック名、シート名を他のモジ...
-
エクセルのシート名変更で重複...
-
ExcelのVBAのマクロで他のシー...
-
Excel VBA 複数行を数の分だけ...
-
エクセルのマクロについて教え...
-
VBA 最終行まで数式をコピーする
おすすめ情報