Excel VBA - 如何从SQL查询填充数组

3

我一直在试图编写一段代码,使我能够查询SQL数据库并使用返回的值填充下拉框。

当我要求查询将值返回到工作表时,查询正常运行,但是我不想让它们出现在工作表中,我只想将它们存储在数组中以供下拉框使用。

以下是我目前的代码...

Sub testQuery()
Dim varConn As String
Dim SQL As String
Dim test As String


Range("A1").CurrentRegion.ClearContents

varConn = "ODBC; DSN=Traceability DB;UID=XXX;PWD=XXX"

SQL = "Select Distinct ""Date"" from testtable"

With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"), SQL:=SQL)
    .Refresh
End With

UserForm1.Show

End Sub

我不确定如何将Range("A1")替换为数组。

注意:这是在MAC的最新版本Excel上使用的。

谢谢您的帮助。


我并不经常进行Excel编程,但是Range("A1")不是指单个单元格吗?应该改成类似于Range("A1:E15")这样的形式吗? - Sparky
1个回答

1

将其保存在记录集中。类似这样:

Set rs = db.OpenRecordset("Select Distinct ""Date"" from testtable")

要访问记录集中的记录,请使用GetRows。就像这样:

data = rs.GetRows(j)

然后循环遍历数据。


我在网上查找了一些定义db的示例,如:Dim db as Database。但是我的问题是,出于某种原因,这种数据类型对我不可用,有人知道为什么吗? - AFJ
我不是VBA专家,但似乎你没有适当的引用。确切的错误是什么? - user194076
错误:未定义用户定义类型。我查看了我的可用参考文献,我已经选择了以下内容:Excel、表单和Office对象库。可用的是:OLE自动化、求解器、VBA项目、图表14类型库、Microsoft Graph、Powerpoint和Word对象库以及Visual Basic for Applications Extensibility。 - AFJ
看一下这个链接:http://www.dbforums.com/microsoft-access/991207-user-defined-type-not-defined.html 和这个链接:http://bytes.com/topic/access/answers/211599-a97-dim-dbs-database-yields-error-user-defined-type-not-defined 或许能解决你的问题。 - user194076

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接