【问题标题】:VBA Double For LoopVBA 双循环
【发布时间】:2016-03-06 23:52:26
【问题描述】:

我正在尝试编写一个双 for 循环来从一个 excel 文件中提取一些输出到另一个文件中。

我有许多数据集,每个数据集都有多个我想从中提取信息的分析。例如,Dataset1 有 Analysis 1 和 2,Dataset 2 有 Analysis 5 和 6,Dataset3 有 Analysis 9 和 10,依此类推……

对于这些分析中的每一个,我都想调用 Extract1,它是执行实际工作的宏。由于代码比较长,Extract1 调用了 Extract2,Extract2 继续了 Extract 1 中的代码。

我已尝试使用 MsgBox 进行调试。当我运行此代码时,循环进入 Dataset2 和 Dataset3。但是对于数据集 2 和 3,它不会进入分析循环。有谁知道是什么问题?

Option Explicit
Public Master As Workbook
Public Source As Workbook
Public IB As String
Public IB2 As String
Public IB3 As String
Public IB4 As String
Public Dataset As Double
Public Analysis As Double
Public Mean_Diff As Double
Public Interaction As Double

Sub looper()

For Dataset = 1 To 3

    For Analysis = ((Dataset - 1) * 4 + 1) To (Dataset * 2)

        Extract1

    Next Analysis

Next Dataset

End Sub

【问题讨论】:

  • ((Dataset - 1) * 4 + 1) To (Dataset * 2) 有 1 是 1 to 2 在 2 5 to 4 和 3 9 to 6...数学在这里杀死你;)
  • 啊。知道了!谢谢。
  • 在一个相关问题中,是否可以让 Excel 循环遍历不遵循任何模式但已预先确定的列表(例如分析 4、9、24、30 等)?
  • 如果是新问题,请继续提出新问题。但只有在自己做一些研究之后。 :) 例如谷歌for each!
  • 是的...For Each 是正确的方法。喜欢For Each x In Array(1, 2, 5, 6, 9, 10) 然后就去x...

标签: vba excel loops


【解决方案1】:

要回答您的相关问题,请将循环计数器增加 1,但使用填充了您的分析编号的数组。请注意,数组默认索引为 0。

Dim aryAnlysis() as Variant
aryAnlysis=Array("Analysis4","Analysis9", "Analysis24","Analysis30")
For i = 0 to 3 
 Call aryAnlysis(i)
Next i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2018-10-11
    • 2015-10-12
    相关资源
    最近更新 更多