Ms access 计算Access查询中的头数并查找最大值

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) 还有别的办法

我正在使用VBA,我正在将一些
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
值这正是我想要的,非常好的工作解释了我为什么会出现错误,并提供了所需解决方案的解释。