Ms access 计算Access查询中的头数并查找最大值
我正在使用VBA,我正在将一些Ms access 计算Access查询中的头数并查找最大值,ms-access,vba,Ms Access,Vba,我正在使用VBA,我正在将一些Access查询导出到Excel。此宏是在访问端生成的。我有一系列查询,例如: Qs=阵列(q1、q2、q3) 我需要对每个查询中的头数进行计数,并找到最大值 根据几次搜索,我发现您可以使用工作表function.Max,但我得到一个“需要对象”错误 下面是我正在尝试的导致错误的代码: WorksheetFunction.Max(Qs(0).Fields.Count, Qs(1).Fields.Count, Qs(2).Fields.Count) 还有别的办法
Access
查询导出到Excel。此宏是在访问
端生成的。我有一系列查询,例如:
Qs=阵列(q1、q2、q3)
我需要对每个查询中的头数进行计数,并找到最大值
根据几次搜索,我发现您可以使用工作表function.Max
,但我得到一个“需要对象”错误
下面是我正在尝试的导致错误的代码:
WorksheetFunction.Max(Qs(0).Fields.Count, Qs(1).Fields.Count, Qs(2).Fields.Count)
还有别的办法吗
另外,我已经添加了对
Microsoft Excel 14.0对象库的引用您报告说q1
、q2
和q3
是包含查询名称的字符串变量
所以问题是字符串没有字段
集合。因此Qs(0).Fields.Count
触发错误#424,“需要对象”
如果需要字段.Count
,则必须通过合适的对象引用它
由于Qs(0)
保存查询的名称,因此可以使用CurrentDb.QueryDefs(Qs(0))
引用实际的DAO.QueryDef
(保存的查询)对象
但是,由于需要该查询的字段的计数
,请使用以下命令:
CurrentDb.querydfs(Qs(0)).Fields.Count
另一种方法是使q1
、q2
和q3
对象变量而不是字符串
Dim db作为DAO.Database
Dim q1作为DAO.QueryDef
尺寸q2为DAO.QueryDef
尺寸q3为DAO.QueryDef
Dim Qs作为变体
Set db=CurrentDb
带db
设置q1=.querydfs(“Query1”)
设置q2=.querydfs(“Query2”)
设置q3=.querydfs(“Query3”)
以
Qs=阵列(q1、q2、q3)
Debug.Print WorksheetFunction.Max(Qs(0).Fields.Count,Qs(1).Fields.Count,Qs(2).Fields.Count)
我在Access 2010中测试了该示例代码,它打印了3个查询中的最大字段数。但是我不知道这个建议是否能很容易地与代码的其余部分集成。希望它能为您指出一些有用的东西。什么是第一季度、第二季度和第三季度?嘿!谢谢你的回复。q1 q2和q3是Access中查询的名称,所以您的意思是它们是字符串值?和Debug.Print TypeName(q1)
告诉您“字符串”?是的,q1、q2和q3是String
值这正是我想要的,非常好的工作解释了我为什么会出现错误,并提供了所需解决方案的解释。