首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历列表并运行报表

循环遍历列表并运行报表
EN

Stack Overflow用户
提问于 2020-09-26 00:05:14
回答 1查看 49关注 0票数 0

第一次发帖,我不是一个VBA专家,但我已经设法在我想要的结果大部分的道路上,因为有这样一个董事会。我希望能自动完成最后一步,并寻求一些帮助。

背景:我每周一早上为我们的项目经理做项目报告。报表模板查询数据库中的几个表,并填充所有适当的字段。然后,它自己创建一个副本,将公式保存为值,并使用从报表中的各个字段捕获数据的命名机制保存报表。所有这些都很好!

问题:在任何时候,我都有80到100个活动项目.现在,我将项目列表复制到“参数”选项卡上的一个表中。然后,使用数据验证,我在"Report“选项卡上创建了一个下拉列表。然后,我在列表中手动1乘1地生成报告。每次在单元格B1中更改项目编号时,数据都会刷新并运行项目的报表。我使用这段代码来完成这个任务:

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)

'MsgBox Target.Address
If Not Application.Intersect(Range("b1"), Range(Target.Address)) Is Nothing Then
Call AA_RunAll
End If
End Sub

我想要做的是创建一个宏,它将遍历列表中的每个项目并运行报告。我假设它是一个循环函数,但我似乎不能让它按我的意愿工作。

另一个需要注意的问题是:每个报表需要3-5分钟才能刷新所有数据,生成报告并保存它。我想在我晚上离开之前把这件事安排在早上完成。

提前谢谢。

Aaron

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-26 02:57:37

我想这可能就是你要找的。

代码语言:javascript
复制
Dim DataValidationRange As Range
Dim Str As String
Str = Replace(Range("B1").Validation.Formula1, "=", "")
Set DataValidationRange = Range(Str)
Dim i
For Each i In DataValidationRange
    Range("B1").Value = i
    Call AA_RunAll
Next

另外,如果您需要在调用AA_RunAll之前等待更新数据,可以使用以下方法:

代码语言:javascript
复制
Public Function MyTimer(MyDelay As Double)
    Dim MyTimerTimer As Double
    MyTimerTimer = Timer
    MyDelay = MyDelay + Timer
    
    Do While MyTimerTimer <= MyDelay
        MyTimerTimer = Timer
        DoEvents
    Loop
End Function

Private Sub GoThrough_Dropdown()
    Dim DataValidationRange As Range
    Dim Str As String
    Str = Replace(Range("B1").Validation.Formula1, "=", "")
    Set DataValidationRange = Range(Str)
    Dim i
    For Each i In DataValidationRange
        Range("B1").Value = i
        WaitForDataToUpdate
        Call AA_RunAll
    Next
End Sub

Private Sub WaitForDataToUpdate()
    Dim RangeToWaitFor As Range
    Set RangeToWaitFor = Range("H5")
    Dim Str As String
    Str = RangeToWaitFor.Value
    Do While Str = RangeToWaitFor.Value
        MyTimer 1
    Loop
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64072664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档