因此,我检查了一些示例,似乎有很多人将表单从sql填充到excel中,但在我的例子中,我有一个与sql记录集链接的多选excel列表框。基本上,我设法将完整的sql记录集发送到电子表格中。它是一个表(1500行,9列),在我的电子表格中,在这个生成的表上面我有9个列表框,每个列表框应该代表它链接列的所有条目。我想从简单开始,在excel列表框中填充一列,这样用户就可以在列表框中选择他们想要的任何条目。我的问题是我没有找到正确的listbox方法来显示我的条目。以下是我目前的代码:
将记录集填充到sql中(为需要此记录的人工作):
Sub Get_Datas_From_SQL()
Dim mobjConn As ADODB.Connection
Dim strConn As String
Set mobjConn = New ADODB.Connection
Dim strSQL As String
strConn = "Provider=SQLOLEDB; Data Source=My_server;" _
& "Initial Catalog=My_db;Integrated Security=SSPI;"
mobjConn.Open strConn
Dim rs As ADODB.Recordset
Dim Rn As Range
Set rs = New ADODB.Recordset
Set Rn = My_sheet.Range("A20")
My_sheet.Range(Rn, Rn.Offset(2000, 20)).ClearContents
strSQL = "SELECT * FROM Stocks_table"
With rs
.ActiveConnection = mobjConn
.Open strSQL
Rn.CopyFromRecordset rs
.Close
End With
mobjConn.Close
Set rs = Nothing
End Sub
现在,作为开始,我添加了应该填充九个列表框之一的代码
Sub init_()
Dim mobjConn As ADODB.Connection
Dim strConn As String
Set mobjConn = New ADODB.Connection
Dim strSQL As String
strConn = "Provider=SQLOLEDB; Data Source=My_server;" _
& "Initial Catalog=My_db;Integrated Security=SSPI;"
mobjConn.Open strConn
strSQL = "SELECT DISTINCT Currency FROM Stocks_table "
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
With rs
.ActiveConnection = mobjConn
.Open strSQL
Dim a()
a = rs.GetRows
?
.Close
End With
End Sub
我从前面的问题中考虑了一些评论,我会尽快回到可能的答案上来!
提前多谢,祝你今天愉快
3条答案
按热度按时间yhuiod9q1#
当你使用
GetRows
-方法,将数据放入二维数组中。有点违反直觉的是,第一个索引是对字段的索引,第二个索引是对记录集行的索引。可以将二维数组指定给
List
-属性-但第一个索引必须是行,第二个索引必须是字段号(如果处理多列列表框)。因此,您只需在分配数组之前对其进行转置:omtl5h9j2#
对于那些想知道的人来说,答案如下:
dim rs as adodb.recordset rs=新建adodb.recordset
bhmjp9jg3#
如果您的列表框是msforms.listbox,请参阅下面的内容。
控件对象图像(&O)