VBA: 无法将函数的返回值赋给变量

VBA: Cannot assign a function's returned value to a variable

我的一张工作表中有以下 VBA 代码(即不在模块中):

Option Explicit

Public timing As String

Sub ButtonLoan1_Click()

    timing = check_timing()
    Application.Run ("loan_" & timing & "_req01")

End Sub

函数 check_timing 在一个模块中定义并且工作正常:

Function check_timing()
    
    If ActiveSheet.Range("B5") = "Q1 and Q3" Then
        timing = "q1q3"
    ElseIf ActiveSheet.Range("B5") = "Q2 and Q4" Then
        timing = "q2q4"
    End If
    
    Exit Function

End Function

然而,运行 ButtonLoan1_Click() Sub returns 一个错误,因为变量 timing 是空的,即它没有从函数 [=13] 中获取它的值=],正如我所愿。我做错了什么?

我的猜测是你应该使用 check_timing 而不是 timing 所以 VBA 知道这是函数返回给之前调用它的人的内容。

Function check_timing()
    
    If ActiveSheet.Range("B5") = "Q1 and Q3" Then
        check_timing = "q1q3"
    ElseIf ActiveSheet.Range("B5") = "Q2 and Q4" Then
        check_timing = "q2q4"
    End If
    
    Exit Function

End Function