我有一个函数来显示一个带有从数组中选择的文本的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
为什么我不能直接访问该语句中的值,或者我在这里做错了什么?
答案 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