我是一个很长时间的狂热Excel用户,但我刚开始学习VBA。我使用以下代码,但在尝试运行Sub test
时收到错误:
编译错误:未定义变量
你能帮我弄清楚出了什么问题吗?
Option Explicit
Function toFarenheit(degrees)
toFarenheit = (9 / 5) * degrees + 32
End Function
Function toCentigrade(degrees)
toCentigrade = (5 / 9) * degrees - 32
End Function
Sub test()
answer = toCentigrade(55)
MsgBox answer
End Sub
答案 0 :(得分:5)
您已启用Option Explicit
,这意味着必须声明您的变量才能使用它们。
在Sub test
中,您遗漏了answer
的声明。添加它应该解决它:
Sub test()
Dim answer As Variant
answer = toCentigrade(55)
MsgBox answer
End Sub
修改强>
由于您不熟悉VBA,因此您可能需要考虑键入变量和函数返回。你不必这样做(一切都会被视为Variant
),但这是一种很好的做法。
如果您正确键入所有内容,您的示例将变为:
Option Explicit
' Accept a double value and return a double type value.
Function toFarenheit(degrees As Double) As Double
toFarenheit = (9 / 5) * degrees + 32
End Function
Function toCentigrade(degrees As Double) As Double
toCentigrade = (5 / 9) * degrees - 32
End Function
Sub test()
' Variable type matches what the function will return.
Dim answer As Double
answer = toCentigrade(55)
MsgBox answer
End Sub
答案 1 :(得分:-3)
我测试了这个转换为farenheit
功能如下
Function ToFarenheit(Degrees As Double)
ToFarenheit = (9 / 5) * Degrees + 32
End Function
子如下
Sub TestFunction()
MsgBox ToFarenheit(0)
End Sub