【发布时间】:2017-10-10 18:16:51
【问题描述】:
我有一个运行一系列其他宏的宏。当我更改特定单元格 (B1) 的值时,宏会自动运行。该宏为 B1 中指定的项目编号生成项目报告。在任何给定时间,我都有大约 75 个活动项目。
我想做的是将项目列表添加到工作簿中,并让它遍历每个值。值和值的数量每周都在变化,所以我不想将这些值硬编码到宏中。我假设我会使用循环功能,但不确定如何去做。
我当前宏的代码是:
Sub AA_RunAll()
Application.ScreenUpdating = False
ActiveWorkbook.RefreshAll
DoEvents
Call OpenFile
Call Copy1
Call DeleteRows1
Call DeleteRows2
Call DetailCopy
Call RemoveEmptySheets
Call SummarySheet
Workbooks("Project WIP Template.xlsm").Worksheets("Summary").Activate
Application.Goto Range("A1"), True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Call SaveAs
Workbooks("Project WIP V5.xlsm").Worksheets("Summary").Activate
Range("b1").Select
MsgBox "Report Complete"
End Sub
提前致谢
【问题讨论】:
-
这个问题不是很清楚。这些各种宏(
DetailCopy等)应该如何获得您的问题所暗示的这些未指定的“值”?你似乎知道你需要某种循环。鉴于缺乏细节,很难说更多。也许你需要重写你的宏,让它们接受参数,然后在循环中调用宏,将值一个一个地传递给它们。 -
几个问题:项目列表来自哪里(生成此列表的原因),与此列表相关联的信息是什么,项目列表中是否有重复项(版本控制等),以及什么是循环的意图吗?具体来说,您有一个列表,您正在循环访问它们,但结果/输出是什么(项目报告是您个人的,而不是我们的)?
-
项目列表当前存储在单独的工作簿中,但可以添加到现有工作簿中。项目列表没有重复值。就循环而言,这可能不是正确的功能,只是我的假设。本质上,现在我手动输入项目编号是 B1。当我按下回车键时,它会运行宏,生成我的项目报告,保存并关闭它,然后让我回到可以输入另一个项目编号的模板。
-
我想让它遵循完全相同的过程,但它不是我手动将项目输入 B1,而是让它在项目列表中运行。
标签: excel loops dynamic-list vba