【发布时间】:2021-04-21 23:04:48
【问题描述】:
我正在编写一段代码来使用 VBA 中的数组概念来选择当前和下一季度的值。 但是,我在运行以下代码时遇到运行时错误 13。
Sub PlaceTheQuarter()
Dim arr, Q1, Q2, Q3, Q4
arr = Array(1, "Q1", 2, "Q2", 3, "Q3", 4, "Q4")
Q1 = Array("Jan", "Feb", "Mar")
Q2 = Array("Apr", "May", "Jun")
Q3 = Array("Jul", "Aug", "Sep")
Q4 = Array("Oct", "Nov", "Dec")
'MsgBox (Application.Match(Application.RoundUp(Month(Date) / 3, 0)))
MsgBox (arr(Application.Match(Application.RoundUp(Month(Date) / 3, 0), arr, 0)))
'ENABLE THIS PART TO TEST Q4 ITERATION
Dim idate As Date
idate = "31-DEC-2020"
a = arr(Application.Match(Application.RoundUp(Month(idate) / 3, 0), arr, 0))
'a = arr(Application.Match(Application.RoundUp(Month(Date) / 3, 0), arr, 0))
i = Mid(a, 2, 1)
Dim next_q As Integer
If i = 4 Then
next_q = 1
Else
next_q = i + 1
End If
MsgBox ("Next Quarter is: Q" & next_q)
MsgBox (MonthName(Month(idate), True))
counter = 0
Dim n_quarter
n_quarter = "Q" & next_q
For Each ab In Q4
If MonthName(Month(idate), True) = ab Then
MsgBox ab
Dim pos As Integer
pos = Application.Match(ab, Q4, False)
MsgBox pos
Else
End If
Next
End Sub
基本上在 Foreach 循环中,如果我手动使用季度名称作为 Q4,它会很好地循环。但我想根据 Q&next_q 之类的值动态传递它。我已经分配了一个字符串值并传递了该变量这在我的情况下也不起作用。
对此的任何指示都非常感谢......
我的目的是让相应的季度数组随着一年中日期的推移而循环。
【问题讨论】:
-
你能描述一下代码应该做什么吗?最好将说明添加到您的帖子中。
-
基本上,如果您考虑最后一个 for 循环,我会尝试从数组中查找月份的出现或索引..但是代码是硬编码的测试..因为测试工作正常。我想获取要选择的特定季度的元素循环。例如:jan q1、Jun q2 等。
-
我更多地考虑如果你正在编写一个函数,那么将返回一个日期的季度或一个日期数组的季度数组或什么?或者,如果您正在编写子程序,它会做什么?
-
感谢您的回复。基本上子是试图找到当前和下一个季度的数字......创建
ForEach循环的目的是找到当月的索引号在相应的 Quarter 数组中,稍后我将添加一些额外的代码来满足我的其他自动化要求......我目前想随着日期在一年中的进展为相应的 Quarter 动态调用 ForEach 循环......请告知
标签: excel vba excel-2010 excel-2007