0

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

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

此函数的返回值是 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

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

4

2 回答 2

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
于 2012-09-06T10:59:23.850 回答
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
于 2012-09-06T11:03:09.600 回答