2017-09-11 5 views
0

(モジュール - パブリック関数で)ExcelでsqlDbとの接続が良好です。Excelでワークシートにコンボボックスを作成するExcelを選択してください。

私はこの接続をうまく動作する単純なSelectクエリ(Sheet1コード)で使用しました。コードの下あたり:今すぐではなく出力よりも

Private Sub Selection() 

Dim rs As Object 
Set rs = CreateObject("ADODB.Recordset") 

Dim sqlstr As String 
sqlstr = "Select * from Selection" 

Call connectDatabase 
rs.Open sqlstr, DBCONT 

If rs.RecordCount > 0 Then 
    For i = 1 To rs.RecordCount 
      With ThisWorkbook.Sheets("Sheet1") 
      .Cells(i, 1).Value = rs(0) 
      .Cells(i, 2).Value = rs(1) 
      End With 
      rs.movenext 
    Next i 
Else 
    MsgBox "FFS" 

End If 
rs.Close 
Set rs = Nothing 
Call closeDatabase 

End Sub 

のSheet1のこれらの細胞(1,1)への結果と(1,2)は、は、私は上記の結果は次の使用例は、シート1の私のComboBox1を移入し、と離れてやりたいです出力。私は多くの解決策を見てきましたが、私は苦労しています。

あなたが私に最善の答えを手伝ったり、指示したりできることに感謝します。

ありがとうございます。

Dasal(あなたはそれはあなたが使用しているコンボボックスこれに依存して設定する方法)あなたのコンボボックスオブジェクトを設定

+1

。 'rs.RecordCount> 0 Then'文の直前に、次の行を追加してください(あなたのコンボボックスオブジェクトは** oCB **と仮定します):' oCB.Clear'。あなたの 'For i = 1 To rs.RecordCount'ループの中から' With ThisWorkbook.Sheets( "Sheet1") '句を削除(またはコメントアウト)し、' oCB.AddItem rs(i) 'に置き換えてください。それはトリックを行う必要があります – Zac

+0

あなたは、レコードセットの '.getrows'プロパティとコンボの' .list'プロパティを見ることができました。私は分でテストする時間はありませんでしたが、 'ActiveSheet.Shapes( 1).OLEFormat.Object.Object.List = r.GetRows' vaqueのためのお詫び、私は完全な回答を投稿できるかどうかを見直します。 –

+0

Zacに感謝します。あなたは正しい道に私を置いてきました。微妙な調整をして、私はコンボボックスに人をつけることができました。 –

答えて

0
Private Sub Selection() 

Dim rs As Object 

Set rs = CreateObject("ADODB.Recordset") 

Dim sqlstr As String 
sqlstr = "Select * from Selection" 

Call connectDatabase 
rs.Open sqlstr, DBCONT 

ComboBox1.Clear 
If rs.RecordCount > 0 Then 
    For i = 1 To rs.RecordCount 

     ComboBox1.AddItem rs(1) 
      rs.movenext 
    Next i 
Else 
    MsgBox "FFS" 

End If 
rs.Close 
Set rs = Nothing 
Call closeDatabase 

End Sub 
関連する問題