VBA:无法将函数的返回值分配给变量[重复]
Posted
技术标签:
【中文标题】VBA:无法将函数的返回值分配给变量[重复]【英文标题】:VBA: Cannot assign a function's returned value to a variable [duplicate] 【发布时间】:2021-12-29 10:27:04 【问题描述】:我的一张工作表中有以下 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 会返回错误,因为变量 timing
是空的,即它没有像我希望的那样从函数 check_timing
获取它的值。我做错了什么?
【问题讨论】:
在函数中,您将值分配给函数名称以返回值,因此check_timing = "q1q3"
和 check_timing = "q2q4"
您需要在程序之外公开timing
或将您的退货更改为check_timing
【参考方案1】:
我的猜测是你应该使用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
【讨论】:
而Exit Function
是多余的,可以删除。 check_timing
也应该接受 Range
参数而不是使用 ActiveSheet.Range("B5")
。
另外,还要添加字符串的返回类型以上是关于VBA:无法将函数的返回值分配给变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何等待module.export函数完成请求,然后再将其返回值分配给不同JS文件中的变量[重复]
将变量传递给函数\使用该变量返回一个新值\重复直到值达到 0