トップ回答者
コンボボックスを使用して範囲選択

質問
回答
すべての返信
-
おがわさん、ご返答ありがとうございます。
おがわさんのおっしゃるとおり、二つのコンボボックスで選択した範囲でテーブルのデータを抽出したいのです。
二つのコンボボックスが連動してしまうというのは、
ComboBox1.DataSource = MainTable
ComboBox1.DisplayMember = "名前"
ComboBox2.DataSource = MainTable
ComboBox2.DisplayMember = "名前"
のように指定すると、片方のコンボボックスの値を変更すると、もう一つも同じ値を取得してしまうということなのですが、おわかりいただけるでしょうか?なんせ、VBをいじくり始めて1週間しかたっていないので、どうコードを表示すればいいのやら…というレベルです。
ちなみに、以前はエクセルを使って、VBAでマクロを組んで同じようなものを作っていました。ですが、エクセルがなくても使えるようにしてみたいと思い、プログラミングを始めてみました。レベルが低くて、おしかりを受けるのを覚悟での投稿です。なにとぞご容赦ください!
-
-
trapemiya さん、ご返答、ありがとうございます。
なんだか、はっきりとは理解していないのですが、ホームページやヘルプで検索をしているうちに、思い通りに動くようになりました!
本当にありがとうございました。まだまだたくさんわからないことがあるので、また質問することもあるかと思います。そのときは是非
よろしくお願いいたします!!
ちなみに、こんな風になりました!
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\!database\年代.mdb")
'Dim Cn2 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\!database\年代.mdb")Dim SQLCm As OleDbCommand = Cn.CreateCommand
' Dim SQLCm2 As OleDbCommand = Cn.CreateCommandDim Adapter As New OleDbDataAdapter(SQLCm)
' Dim Adapter2 As New OleDbDataAdapter(SQLCm)Dim Table As New DataTable
Dim Table2 As New DataTableSQLCm.CommandText = "SELECT * FROM 年代"
Adapter.Fill(Table)
Adapter.Fill(Table2)'▼値の表示
ComboBox1.DataSource = Table
ComboBox1.DisplayMember = "年代"
ComboBox2.DataSource = Table2
ComboBox2.DisplayMember = "年代"
'▼後処理
Adapter.Dispose()
SQLCm.Dispose()
Cn.Dispose()
End Sub -
trapemiya さん、お返事、ありがとうございます。
もう一つ、質問です。
エクセルの範囲選択の時は、VBの場合、どのように記述するのでしょうか?
エクセルのマクロでは、以下のように変数を用いて、セル範囲を取得していました。
Sheets("入力").Activate
Dim 問題数 As Integer
問題数 = Sheets("選択画面2").Range("b2").Value
Range("b3") = "=rank(a3,$a$3:$a$" & 問題数 + 2 & ")"
Range("b3").Select
Selection.CopySheets("入力").Range(Cells(3, 2), Cells(問題数 + 2, 2)).Select
Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=FalseVBは、データベースを使用するなど、エクセルとは概念が違うのだと思います。そのあたりのイメージがわかずに悩んでいます。
どうぞよろしくお願いいたします。