VBA for Excel - 如果更深的选择案例不匹配标准,请再次避免输入代码
Posted
技术标签:
【中文标题】VBA for Excel - 如果更深的选择案例不匹配标准,请再次避免输入代码【英文标题】:VBA for Excel - Avoid type code again if deeper select case dont match criteria 【发布时间】:2017-11-03 09:43:28 【问题描述】:我想知道如果更深的选择案例不符合条件,是否有一种解决方法可以不重新输入代码。
我必须检查月份是否是下面所述的月份之一,如果是,我必须检查该月的日期是否符合条件。如果日期不匹配任何情况,则必须运行的代码是上述 ELSE 情况下的 Select 语句中设置的代码。
我知道解决此问题的唯一方法是使用 and IF 语句而不是嵌套的 select case,并使用 GO TO LABEL 让我回到 CASE ELSE 语句,但这似乎很不优雅。
如果更深的选择案例不符合条件,有没有办法不在 else 案例中重新输入相同的代码?
Select Case Month(Range("b" & Start))
Case 1
Case 4
Case 5
Case 6
Case 8
GiornoMese = listaattiva(j).Text & "/" & Month(Range("b" & Start)) & "/" & Year(Range("b" & Start))
Select Case Day(GiornoMese)
Case 15
**HERE IF THE DAY IS NOT THE 15th
CODE SHOULD JUMP OUT AND RUN CODE TYPED
IN THE CASE ELSE STATEMENT**
Case 12
Case Else
'Debug.Print listaattiva(j).Text & "/" &
'Month (Range("b" & Start)) & "/" & Year(Range("b" & Start))
GiornoMese = listaattiva(j).Text & "/" & Month(Range("b" & Start)) & "/" & Year(Range("b" & Start))
If Weekday(GiornoMese, vbMonday) = 7 Then
'Domenica - Tutte le ore del giorno sono F3
For Each quarto In listaattiva(j).Attributes
'Debug.Print listaattiva(j).Attributes.Length
'Debug.Print quarto.Text
F3 = F3 + quarto.Text
'Debug.Print F3
Next
@MarcinSzaleniec 这会让我重新输入我已经在 CASE ELSE STATEMENT 中声明的代码(或 ctrl-v 粘贴)。
我必须检查 XML 文件中列出的数据是否在公共假期。 为此,我先检查月份,然后检查日期。
如果不是实际的公共假期月,我只需在 ELSE 语句中使用标准代码;如果是一个月和假期,我会编写不同的代码,但如果是一个月而不是假期,我会运行已经声明的代码ELSE 语句的代码。
我的更多是“美丽”问题,我想将代码保留在同一个 SUB 中,具有垂直的工作流程,而不必让 ppl 跳到其他 subs 上。
【问题讨论】:
【参考方案1】:从 Case Else 部分的代码中单独创建一个 sub。您可以将必要的变量作为参数传递。尝试类似:
Sub DoIfElse (_Year as Integer, _Month as Integer)
(...)
end Sub
很难解读哪些变量是真正需要的,因为您只发布了代码片段,但我认为您知道自己需要什么。 然后,您可以根据需要在主子例程的各个位置使用 DoIfElse。
【讨论】:
以上是关于VBA for Excel - 如果更深的选择案例不匹配标准,请再次避免输入代码的主要内容,如果未能解决你的问题,请参考以下文章