vbscript - 如果语句带有函数的返回值?

时间:2012-09-06 10:54:22

标签: function if-statement vbscript return-value

我有一个函数来显示一个带有从数组中选择的文本的MsgBox。

'# show the choosen message
Public Function ShowMessage(which)  
    ShowMessage = MsgBox(Message(which),vbyesno,"title")
end Function

此函数的returnvalue是MsgBox本身的返回值。当我尝试使用if语句请求该值时,我收到一条错误消息,指出这是该函数的错误值。

if ShowMessage = vbYes then
    MsgBox "clicked ok"
    StartProgram("notepad.exe")
else
    MsgBox ("some error occurred")
end if

当我将ShowMessage的值分配给var1并使用if语句时,我没有收到任何错误消息。

'# show the choosen message
Public Function ShowMessage(which)  
    ShowMessage = MsgBox(Message(which),vbyesno,"title")
    var1 = ShowMessage
end Function

....

if var1 = vbYes then
    MsgBox "clicked ok"
    StartProgram("notepad.exe")
else
    MsgBox ("some error occurred")
end if

为什么我不能直接访问该语句中的值,或者我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

该功能需要一个参数,试试这个:

Public Function ShowMessage(which)  
    ShowMessage = MsgBox(which,vbyesno,"title")
end Function

if ShowMessage("Heya, I'm a message") = vbYes then
    MsgBox "clicked ok"
    StartProgram("notepad.exe")
else
    MsgBox ("some error occurred")
end if

答案 1 :(得分:1)

你不能只使用函数的名称,因为它不是变量,因为它不是。

您必须调用该函数才能获得它的返回值。该值可以直接使用,也可以存储在变量中以供以后使用。

你不能这样做:

ShowMessage("Polly want a cracker?")  ' The function is called here, the return value is lost
if ShowMessage = vbYes then           ' This does not get the return value
   ...
end if

你必须这样做:

if ShowMessage("Polly want a cracker?") = vbYes then    ' Return value used directly
    ...
end if

或者这个:

answer = ShowMessage("Polly want a cracker?")      ' Return value stored ...
if answer = vbYes then                             ' ... and then used here
    ....
end if