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

関数の名前を変数のように使用することはできません。変数ではないからです。

戻り値を取得するには、関数を呼び出す必要があります。値は直接使用することも、後で使用するために変数に格納することもできます。

あなたはこれを行うことはできません:

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 に答える
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 に答える