使用VBA遍历下拉列表并对每个运行MS Access宏

3

目前我有一个带有姓名下拉列表的MS Access 2003表单。使用这个工具的方法:从下拉列表中选择一个名字,然后点击运行MS Access宏(基于所选名称运行3个不同的查询),然后打开主Excel模板并运行一个Excel宏,将为每个销售员创建1个单独的文件。

我想做的事情是:使用MS Access VBA代码循环遍历组合框中的姓名列表,然后运行现有的MS Access宏,分别运行列表中每个姓名的每个查询,然后将每个销售人员的数据导出到已经格式化好的Excel模板或者只是到一个Excel文件中,我会进行格式化操作。

我不想手动选择每个姓名,总共有超过300个姓名在下拉列表中,这需要太长时间去运行所有这些查询。我想使用VBA代码循环遍历表单上组合框中的每个姓名,并使用每个姓名运行现有的MS Access宏(运行3个查询),然后我希望该功能可以将每个单独的文件导出到Excel中。最终结果是每个销售人员都将有自己的Excel文件。


2
下拉框中的名称来自哪里?如果是从查询中获取的,那么您不能只运行该查询并循环遍历记录,为每个记录运行报告宏吗?您能展示一些代码吗(您能修改表单中的代码吗)?最简单的方法是循环遍历下拉框中的条目,将列表选择设置为每个项目,然后运行报告宏。没有更多细节,很难提供更多建议。 - Tim Williams
2个回答

5
Dim i As Long
  with myCombo
    For i = 0 To .ListCount
        Debug.Print .ItemData(i)
    Next i
end with

1

虽然iDevlop的答案在技术上是正确的,但它也会在最后返回组合框的Null值。因此,如果您只想获取列出的项目而不包括Null,请使用以下代码:

Dim i As Long
With combobox
   For i = 0 To .ListCount - 1
       Debug.print .ItemData(i)
   Next i
End With

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