有可能是你选取数据出错了吧!
MsgBox my_data(1, 0)这样可以理解为选取第二个字段第一行的记录
如果报错则证明是没有数据的
如图Excel表格得出每个名称出现的次数
Sub My()
Dim Re As Object
Dim Content$, Arr
Set Re = CreateObject("Adodb.Recordset")
With Re
.Open "Select [名称],count([名称]) from [Sheet1$] group By [名称] ", "Driver=Microsoft Excel Driver (*.xls);DBQ=" & ThisWorkbook.FullName
Arr = Re.getrows
For j = 0 To UBound(Arr, 2)
For i = 0 To UBound(Arr)
Content = Content & Arr(i, j) & Chr(9)
Next
Content = Left(Content, Len(Content) - 1)
Content = Content & Chr(10)
Next
MsgBox "名称" & Chr(9) & "数量" & Chr(10) & Content
.Close
End With
End Sub
Access一样可以是这样用
追问问题是我的数据集不只一条记录(输出记录集数都正确了) 但是用.getrows方法转换为数组就只剩一条记录
求大神指教 什么情况导致的异常
不行
追答你多贴点代码看下,
因为 如果 rs 正确的话,是可以这么用的..
Dim my_data As Variant
Set my_db = CurrentDb
Set my_tb = my_db.OpenRecordset("表1")
my_data = my_tb.GetRows
表结构是2个字段 两条记录
但是MsgBox my_data(0,1)或MsgBox my_data(1, 0)就会报下标超出界限的错
难道my_tb.GetRows方法只能读一条记录?
有木有试过 检测一下 rs里面的东西 是什么?确定一下是 rs本身的问题,还是 getrows的问题,使用之前 最好 用下 rs.movefirst方法
你看看 my_data(0, 0) 对不对? 因为如果 getrows 没带参数的话,默认是取出所有记录的,你看下 之前有木有设置过什么
最后 我测试的是VB,不知道在VBA 中是否有不同? 不然 我也不知道哪里有问题了..
测试过 rs完全没问题 my_data(0, 0)正确 没有设置多余的东西
它只取rs第一条记录啊 肿么回事啊
不是吧,这么坑爹..^_^
要不试着 给 getrows 加些参数 试试..
其实,你完全可以把 rs 当成 二维数组来处理,到最后 再把 rs 资源 卸载掉就行了,不一定非要转
实在想转 又没好的方法,就用循环做吧
最后的最后 不行的话 ,等高手,或者 去CSDN 问下,盼牛B的大神..解决了的话顺便 告诉我一下
我从ACESS里面将数填进EXCEl啊 一个一个写 程序会卡到泪奔的
加了参数 不行啊