- ベストアンサー
EXCELでSQL構文利用の方法
EXCEL-VBAで、WHERE文での、コンボボックスの値の取得方法がよく分かりません。回答集に似たような質問がありましたが、基礎が無い為、前に進めません。都合のよい事を申しますが教えてください。 Sub テスト2( ) Dim objcon As ADODB.Connection Dim objrs As ADODB.Recordset Dim i As Integer Set objcon = New ADODB.Connection Set objrs = New ADODB.Recordset objcon.Open _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & ThisWorkbook.Path & "\process.mdb" With objrs .ActiveConnection = objcon .Source = "select * from 002顧客名 where 県名 = Worksheets[sheet1!].ComboBox1.Text;" 'コンボボックスの値の取得ができません .Open End With For i = 1 To objrs.Fields.Count Cells(1, i).Value = objrs.Fields(i - 1).name Next Range("a30").CopyFromRecordset objrs objrs.Close objcon.Close End With これ以下で、変数宣言するには、何が足りないのか教えてください objcon.Open _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & ThisWorkbook.Path & "\process.mdb" Dim name As Variant name = Worksheets("sheet1").ComboBox1.Text With objrs .ActiveConnection = objcon .Source = "select * from 002顧客名 where 県名 = name;" .Open End With 以上、なにとぞご指示をお願いします。
- みんなの回答 (5)
- 専門家の回答
お礼
ご回答頂きありがとうございます。やっと前に進むことができそうです。本当に助かりました。 comboboxの値を直接取得して、次のcomboboxの値の検索条件にしたかったのですが、とりあえず、comboboxのテキストをセルに転記させ、その値を参照して検索抽出をさせることにします。combobox軍団を力技で積み上げて入力システムを作り、後からサブルーチンを利用できるか検証してみます。 変数mmcodeの値を指定した後、変数codeの宣言時にmmcodeをテキスト扱いするというのが、ポイントのようですね。 mmcode = Worksheets("sheet1").Range("b19").Text code = "'" & mmcode & "%' " '大阪を含むデータ検索 変数宣言したものを、テキストとして扱わなければならない。でも次の1行 Source = "select * from 003業務コード where 顧客名 like " & code & ";" では、テキスト扱いをしていない。このあたりのルールがわからないのですが、参考事例として記録し、今後類似状態時のエラー発生時の対処法の選択枝として記憶しておくことにします。 最初は、comboboxにアルファベットを追加入力する毎にその条件を満たすデータを絞り出し抽出表示させ、そのデータを直接comboboxのリストにしたかったのですが、背伸びしすぎのようです。 また、ご質問させていただくことがあると思います。これからもアドバイスよろしくお願いいたします。