【发布时间】: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