【问题标题】:excel vba to populate combobox in worksheet from sql select queryexcel vba从sql选择查询填充工作表中的组合框
【发布时间】:2018-02-19 18:53:23
【问题描述】:

我在 Excel 中与 sqlDb 有良好的连接(在模块 - 公共函数中)。

我已将此连接与一个简单的 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) 中,我希望以上结果在 Sheet1 上填充我的 Combobox1 并取消输出。我已经查看了很多解决方案,但我都在苦苦挣扎。

如果您能帮助或指导我找到最佳答案,不胜感激。

谢谢。

达萨尔

【问题讨论】:

  • 设置您的组合框对象(如何设置取决于您使用的组合框)。然后就在If rs.RecordCount > 0 Then 语句之前,添加以下行(假设您的组合框对象称为oCB):oCB.Clear。从For i = 1 To rs.RecordCount 循环中删除With ThisWorkbook.Sheets("Sheet1") 子句(或将其注释掉)并将其替换为oCB.AddItem rs(i)。这应该可以解决问题
  • 您可以查看记录集的.getrows 属性和组合的.list 属性,我现在没有时间测试,但类似ActiveSheet.Shapes(1).OLEFormat.Object.Object.List = r.GetRows 的道歉含糊不清,我会重新访问,看看是否可以发布完整的答案。
  • 谢谢扎克。你让我走上了正确的道路。通过一些调整,我能够填充组合框,

标签: sql excel vba select combobox


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2015-03-28
    • 1970-01-01
    相关资源
    最近更新 更多