变量未定义的编译器错误

时间:2014-12-29 19:43:30

标签: vba compiler-errors

我是一个很长时间的狂热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

2 个答案:

答案 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