VB2005で開発しています。
あるイベントからメソッドを呼び、そのメソッドも次のメソッドを呼ぶような
処理があるとします。
この場合に、最上位のイベント以外から、
このイベントの処理をすべて終了する方法はございませんか?
最上位のイベントであれば、
Exit Subと書けば、そのイベント内の処理はすべて終了されると思いますが、
それを、下位のメソッドで行いたいのです。
このようなことはできないのでしょうか?
もし方法がございましたら、教えて頂きたいです。
ぜひ、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
Exception を Throw してください。
System.Exception を継承した自前クラスを作り、最上位イベントでは、Try ~ Catch で それ「だけ」をキャッチするようにします。
Sub イベントプロシージャ
Try
SubA
Catch mex As MyException
MsgBox("下位メソッドで処理が中止されました。")
End Try
End Sub
Sub SubA()
SubB
End Sub
Sub SubB()
If 条件 Then
Throw New MyException("処理中止")
End If
End Sub
---
Public Class MyException Inherits System.Exception
・
・
・
End Class
ご回答ありがとうございます。
例外で実現すれば良いのですね。
このように使用することを考えておりませんでした。
大変参考になりました。
No.1
- 回答日時:
私の知る限りでは、簡単には実現できない気がします。
ですが、多少面倒には なりますが、動作自体は実現可能かと
思います。
例えば、下位メソッドで、処理を中断することを示す戻り値を
返すようにし、1つ上位のメソッドでは、その戻り値によって
更に上のメソッドに処理中断を示す戻り値を返す…
最上位のメソッドでは、その戻り値によってはExit Sub
(またはExit Function)するという手も考えられます。
または、戻り値を他の用途で使用していて、戻り値による
中断が出来ない場合は、モジュールレベルとかアプリケーション
レベルの、スコープが広い変数を準備して、その変数で
処理を抜けるかどうかを判断する事も可能かと思います。
その場合も、下位のメソッドを抜けた直後に、上位メソッドで
更に抜けるかどうかを判定する必要がありますが。
なんか他にもあるかも しれませんが…
他の方のフォローに期待することとしましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Visual Basic(VBA) vbaエクセルマクロについて RemoveDuplicatesを使わずに、重複行を削除すらマクロを作 3 2023/03/02 22:03
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
【sendkeysメソッドが動かずに...
-
オートシェイプの位置がずれる...
-
AdapterView<?> parent この部...
-
VB.NET デリゲートへのコールバ...
-
サーブレット DBにある生年月...
-
Excel VBAにて
-
掲示板で、テキストフィールド...
-
boolean型のフィールドとゲッタ...
-
エクセルVBAにおけるON TIMEメ...
-
struts使用時のメソッド
-
VB.netで、シリアル通信のタイ...
-
オーバーロードの「あいまい」...
-
シンボルを解決できません。 ...
-
canvasに描画したものを全て削...
-
VB.NET/256色でのBMPファイル保存
-
タブコントロールの問題 (VB)
-
計算プログラムでの平方根の求め方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
Labelコントロールに数字を代入...
-
final修飾子を使っているのに、...
-
エクセルVBAにおけるON TIMEメ...
-
コマンドプロンプト実行後に画...
-
mainメソッドのthrows節で設定...
-
DataGridViewでセルクリックイ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
ExcelのxlDialogInsertPictureで。
-
Refreshメソッドの使い方
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
ウィンドウを最前面にできません
-
(String args[])というメッソ...
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA シェイプの原型のサ...
-
VB.netで、シリアル通信のタイ...
-
boolean型のフィールドとゲッタ...
おすすめ情報