变量未定义的编译器错误

Aly*_*yss 2 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
Run Code Online (Sandbox Code Playgroud)

Jas*_*ner 5

您已Option Explicit启用,这意味着您必须在使用它们之前声明您的变量.

在Sub test,你错过了一个声明answer.添加它应该解决它:

Sub test()
    Dim answer As Variant
    answer = toCentigrade(55)
    MsgBox answer    
End Sub
Run Code Online (Sandbox Code Playgroud)

编辑

由于您不熟悉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
Run Code Online (Sandbox Code Playgroud)

  • 我想补充一点,自定义函数应该是`toWhatever(degrees As Long)As Long`或者你想要的任何变量类型.(不是必需的,但总是有助于定义变量类型) (2认同)