人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VisualBasicで、関数内で関数を呼び出した際、呼び出された側で Exit Sub を使っても呼び出された側しか終了されず、呼び出し元の関数を終了させる事ができません。例えば
Private Sub Command1_Click()
XXX
Label1.Caption = ”aaa”
End Sub

Private Sub XXX()
Exit Sub
End Sub
としても Label1.Caption は ”aaa” になってしまいます。
呼び出された側で、呼び出し元ごと終了させられる方法はあるでしょうか?
よろしくお願いします。

●質問者: tecra
●カテゴリ:コンピュータ
✍キーワード:AAA EXIT sub VisualBasic 関数
○ 状態 :終了
└ 回答数 : 10/10件

▽最新の回答へ

1 ● mstkwb
●26ポイント

http://www.hatena.ne.jp/1119401604#

人力検索はてな - VisualBasicで、関数内で関数を呼び出した際、呼び出された側で Exit Sub を使っても呼び出された側しか終了されず、呼び出し元の関数を終了させる事ができません。例えば ..

↑ダミーです。

XXXをSubではなくFunctionにしてXXXでExitしたときは固有の戻り値を返すようにします。Command1_Clickではその戻り値を判断して”aaa”を代入しないようにするというのがオーソドックスなやり方だと思います。

◎質問者からの返答

すいません。

XXX内だけを変更してどうにかしたいんです。


2 ● sora0513
●13ポイント

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_k05.htm

VB 基礎編 (その五) 関数構造(sub、function) private、public、ByVal、ByRef - SAK Streets

戻り値返して、それで判断すれば良いかと思いますが。


3 ● きゃづみぃ
●13ポイント

http://www.hatena.ne.jp/awindow?

残念ながら、このような場合は、戻り値を返してあげて それにより、呼び出し元で 終了させるしかありません。


ちなみに Exit Sub は、その Subを終了させるという意味で、それは Private Sub XXX() のSubという意味です。


4 ● たけし
●13ポイント

http://www.microsoft.com/

Microsoft Corporation

Private Sub CommandButton1_Click()


If fn_test = -1 Then

TextBox1.Text = ”AAA”

Exit Sub

End If

TextBox1.Text = ”BBB”

End Sub

Private Function fn_test() As Integer


fn_test = -1

Exit Function


End Function


こうやってもできます。

手元にエクセルしかないんで、後はちょいなおしてみて


5 ● kuro_rakko
●13ポイント

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_p06.htm

VB 入門編6 - 関数構造、function、sub、組み込み標準関数、エラートラップ - SAK Streets

Private Sub Command1_Click()


if XXX then

Label1.Caption = ”aaa”

else

exit sub

end if


End Sub


Private function XXX() as boolean

XXX=False

End function


呼び出し元ごと終了させる方法は無いと

思うので上記のように書いてみるのはどうでしょうか。

的外れだったらすみません。


1-5件表示/10件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ