vb数组赋值(记录集赋值给数组后,利用转置函数处理多维数组的方法)

大家好,今日继续讲解VBA数据库解决方案,今日讲解的是第76讲,内容是:记录集赋值给数组后,利用转置函数处理多维数组的方法。我在第一册的第43讲中,我讲了将记录集存入数组的方案,并通过一个Index函数在工作表中恢复数组数据的方法。今日讲的是利用转置函数来完成同样的功能。

实例讲解,我们有下面的工作表数据,

我要首先把上述的数据放入ADO的记录集中,然后将记录集的数据赋值给数组,最后将数组的数据在工作表中显示出来。为什么要讲这个方法呢?确实,我们可以在工作表中可以直接显示记录集的数据,但数组的功能强大,我们必须要引入这个知识点的讲解。下面看我给出的代码:

Sub mynzRecords_76() '第76讲 记录集赋值给数组后,利用转置函数处理多维数组的方法

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Dim myData() As Variant

Dim myTitle() As Variant

Worksheets("76").Select

Cells.ClearContents

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.FullName

cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';" _

& "data source=" & strPath

strSQL = "SELECT * FROM [数据7$]"

rsADO.Open strSQL, cnADO, 1, 3

myTitle = Array("员工编号", "姓名", "年龄")

myData = rsADO.GetRows(-1, 1, myTitle)

Range("a1:C1") = myTitle

Range("a2").Resize(UBound(myData, 2) + 1, UBound(myData) + 1) = Application.Transpose(myData)

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

代码讲解:

1 上述的过程中首先打开一个用ADO连接,然后打开记录集,并将记录集赋值给数组,最后在工作表中还原数组。

2 myTitle = Array("员工编号", "姓名", "年龄")

myData = rsADO.GetRows(-1, 1, myTitle)

vb 数组

上述语句中在记录集中按myTitle数组的格式,讲记录集赋值给myData,要注意的是myData要是变体变量。

3 Range("a2").Resize(UBound(myData, 2) + 1, UBound(myData) + 1) = Application.Transpose(myData)

上述语句中UBound(myData, 2) 获得myData的第2维数的最大数值;UBound(myData) 获得myData的第1维数的最大数值.用Resize()函数扩展了工作表区域;Transpose(myData)将数组myData转置后填入区域。

下面看代码的执行结果:

今日内容回向:

1 如何将记录集的数据赋值给数组?

2 转置函数是如何利用的?

您可以还会对下面的文章感兴趣

最新评论

  1. 小熊历险记
    小熊历险记
    发布于:2022-04-27 09:18:09 回复TA
    Data) + 1) = Application.Transpose(myData)上述语句中UBound(myData, 2) 获得myData的第2维数的最大数值;UBound(myData) 获得myData的第1维数的最大数值
  1. 姚雄达羽
    姚雄达羽
    发布于:2022-04-27 05:04:49 回复TA
    像穷人一样讲价,像绅士一样付账。

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友