0

另一个尝试逃离 VBA 失败。我正在尝试将 Excel VBA 中的字符串解析为两个变量。我确实在脑海中提出了非常识部分来研究它,但仍然没有运气。

Sub StartEndMonth(ByVal MonthRange As String, ByRef MonthStart As String, ByRef MonthEnd As String) ' xxx-xxx
    MonthStart = "Jan"
    MonthEnd = "Dec"
End Sub

Sub TestMonthList()
    Dim Month_Range, Start_Month, End_Month As String
    Month_Range = "Jan-Dec"
    StartEndMonth Month_Range, Start_Month, End_Month
    MsgBox MonthRange & " " & Start_Month & " " & End_Month
End Sub

上面的代码在调用例程中的 Start_Month 变量上引发 VBA ByRef 参数类型不匹配错误。我应该在 StartEndMonth 例程中有一些解析逻辑。在我消除了例程中的所有其他内容后,我仍然遇到编译错误。

假设每个变量都已正确定义?或不?

谢谢您的帮助!

4

1 回答 1

1

作为一般规则,不要编写修改其参数的子/函数。如果你计算一些东西,把它返回,例如作为一个数组:

Function SplitMonthRange(MonthRange As String)
    SplitMonthRange = Split(MonthRange, "-")
    ' you really should add some sanity checks, e.g. UBound() and value checks
End Function

然后 res 的工作非常简单:

Sub TestSplitMonthRange()
    Dim monthRange as String, months As Variant

    monthRange = "Jan-Dec"
    months = SplitMonthRange(monthRange)

    MsgBox monthRange & ": " & months(0) & " to " & months(1)
End Sub

提示 - 这个:

Dim Month_Range, Start_Month, End_Month As String

声明 2 个变体和 1 个字符串。这是对的:

Dim Month_Range As String, Start_Month As String, End_Month As String
于 2021-07-07T11:35:50.650 回答