首页 > 解决方案 > 无法在 VBA 中返回正确的变量计数

问题描述

我有一个宏,它根据用户输入的不同时间范围运行场景。如果用户输入 2 个或更多场景作为日期,它可以正常工作 - 如果有人只输入一个日期,它会失败。此块适用于 2 个或更多:

countofscenarios = Range(Range("B5"), Range("B5").End(xlDown)).Count

我只是不知道如何使其仅在输入 1 个日期的情况下工作 - 我尝试了以下不同的变体:

If Range("B5") <> "" And Range("B6").End(xlDown).Count = 0 Then
    countofscenarios = 1
Else
    countofscenarios = Range(Range("B5"), Range("B5").End(xlDown)).Count
End If

但我收到一个溢出错误。抱歉缺少工作数据,但如果有帮助,我可以删除一些内容。提前致谢。

标签: excelvba

解决方案


你的答案几乎就在那里:

If Range("B5") = "" Then
   MsgBox("Enter a date")
   Exit sub
ElseIF Range("B6") = "" AND Range("B5") <> "" Then      
    countofscenarios = 1
Else
    countofscenarios = Range(Range("B5"), Range("B5").End(xlDown)).Count
End if

我输入了一些“错误处理”以避免在没有输入任何日期的情况下运行代码(if 语句的第一部分)。然后检查 B5 中有值但 B6 中没有值的事件,在这种情况下将计数设置为 1(if 语句的第二部分)。最后是您在 Else 子句中的原始计数器。

或者,您可以使用标题行。当 B5 中没有值时,这将为您提供 0。当然还有其他单元格中的计数。但是,这仅在 B4 中有值时才有效。

countofscenarios = Range(Range("B4"), Range("B4").End(xlDown)).Count -1

推荐阅读