質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.42%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

17785閲覧

VBAコンボボックスにDBからの値を表示させたい

rikaruto

総合スコア16

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2018/09/14 06:34

編集2018/09/14 07:03

DBから値を配列として受けとるところまでは出来たのですが、コンボボックスに入れ込むことができません。
DBはSQLSERVER2014を使っています。
M_TANTOSHAテーブルからTANTOSHA_IDを取り出してコンボボックスに入れたいです。

VBA

1Sub conDB() 2 3 Dim db As New ADODB.Connection 4 Dim rs As New ADODB.Recordset 5 Dim strSQL As String 6 Dim CON As String 7 8 9 '↓DB接続情報 10 CON = "Provider = SQLOLEDB;" 11 CON = CON & "DATABASE=******;" 12 CON = CON & "UID=******;" 13 CON = CON & "PWD=*******;" 14 15 strSQL = "select TANTOSHA_ID from M_TANTOSHA" 16 17 Set rs = New ADODB.Recordset 18 19 rs.Open strSQL, CON 20 21 rs.MoveFirst 22 23 24 Dim i As Long, hairetsu As Variant 25 hairetsu = rs.GetRows() 26 27 rs.Close 28 29 For i = 0 To UBound(hairetsu, 2) 30 Debug.Print hairetsu(0, i) 31 Next i 32 33 Set rs = Nothing 34 Exit Sub 35 36End Sub 37

再投稿↓

VBA

1Private Sub ComboBox1_Change() 2Dim db As New ADODB.Connection 3 Dim rs As New ADODB.Recordset 4 Dim strSQL As String 5 Dim CON As String 6 7 8 9 'DB??????i?[ 10 CON = "Provider = SQLOLEDB;" 11 CON = CON & "DATABASE=****;" 12 CON = CON & "UID=*****;" 13 CON = CON & "PWD=*****;" 14 15 16 17 18 '1.SQL????o?????V?[?g???? 19 20 strSQL = "select TANTOSHA_ID from M_TANTOSHA" 21 22 Set rs = New ADODB.Recordset 23 24 rs.Open strSQL, CON 25 26 rs.MoveFirst 27 28 Dim i As Long, hairetsu As Variant 29 hairetsu = rs.GetRows 30 31 rs.Close 32 33 'このような感じで試していました。 34 '1行だけ表示されたり、何も表示されなかったりします。 35 ComboBox1.AddItem 36 ComboBox1.List(0, 1) = hairetsu(0, 1) 37 38 Set rs = Nothing 39 Exit Sub 40 41End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2018/09/14 06:43

コンボボックスを操作しているコードが見当たりませんが、コンボボックスにアイテムを追加する方法自体がわからないのでしょうか?
ttyp03

2018/09/14 06:45

コンボボックスはシート上にあるのでしょうか?フォーム上でしょうか?フォームコントロールのコンボボックスでしょうか?ActiveXのコンボボックスでしょうか?
rikaruto

2018/09/14 06:52

説明不足で申し訳ございません!フォーム上にコンボボックスがあります。
rikaruto

2018/09/14 06:54

コンボボックスに入れようとしたものを再度投稿させていただきます。
guest

回答1

0

ベストアンサー

単純にこんなのでよいと思いますが。

VBA

1For i = 0 To UBound(hairetsu, 2) 2 ComboBox1.AddItem hairetsu(0, i) 3Next i

投稿2018/09/14 07:08

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rikaruto

2018/09/14 07:24

ありがとうございます。 コンボボックスに表示させることができました。 ただ、コンボボックスを選択し直すと同じ内容が増えていくので、そこは自分で考えてみます!
ttyp03

2018/09/14 07:30

ループで回す前にコンボボックスの初期化が必要でしたね。 ComboBox1.Clear
ttyp03

2018/09/14 07:33

あと、後出しで申し訳ないですけど、1次元配列に変換すればListに直接放り込むことができます。 arr = WorksheetFunction.Transpose(hairetsu) ComboBox1.List = arr
rikaruto

2018/09/14 08:04

追加で回答をいただき感謝します。 ループで回すようにすると、どうにも動作がおかしくなります。引き続き、試行錯誤してみます。 1次元配列を試してみると、同じ内容は表示されずに、DBの抽出結果のみ表示させることができました。 ご親切に教えて頂き、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.42%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問