電子書籍の厳選無料作品が豊富!

現在プログラムを作っているんですがある行にジャンプしたくなりました・・・
どうすればいいんでしょうか?
要するにCでいうところのラベルやBASICでいうところの行番号へ飛ぶ機能が分からないんのですが・・・
教えてください。

A 回答 (3件)

> 現在プログラムを作っているんですがある行にジャンプしたくなりました・・・


> どうすればいいんでしょうか?

GoTo文を使用します。

例えば・・・。

Private Sub Command1_Click
  On Error Goto ErrLine
  
  Call Method(Args......)
  
  Exit Sub
  
ErrLine:
  
  Call MsgBox(Err.Description, vbCritical, CStr(Err.Number))
End Sub

上記の例では、エラーが発生した際にラベル行の処理が実行されます。

GoTo文に関しては、構造化プログラミングを破壊する、ソースコードの可読性(読みやすさ)を損なう、といった問題があり、高級言語では使用を推奨されません。
(機械語レベルではSelect Case文も、ループも、ラベル行へのジャンプですが・・・)

VBでGoTo文を使用するのは、下記のような場合です。

・例外処理
・多重ループからの脱出
・ループ内での「1回飛ばし」のような変則的制御

上記以外の処理、特に正常系の処理でGoTo文が必要と感じたら、モジュール設計に問題がないか検討の余地があると思われます。特定機能の実行部分へのジャンプであれば、ほとんどの場合は適切な関数・サブルーチン分割で解決できるはずです。

ちなみに、VB.NETでは構造化例外処理がサポートされており、従来は必須とされたOn Error GoTo ......ステートメントを使用せずに例外処理の記述が可能となっています。(従来の構文も使用可能)
また、VB6.0以前でも、On Error Resume Nextステートメントを使用すれば、インラインエラー処理が可能です。記述を工夫すればTry....文に近い形にすることもできます。
    • good
    • 0
この回答へのお礼

ありがとうございました
新しく問題が出たのでそちらも分かりましたら教えてください。
http://www.okweb.ne.jp/kotaeru.php3?q=444476

お礼日時:2003/01/13 18:19

GOTO


を調べてみてください。色々問題もありますが、必要であれば使用するのもよいかと思います。もし、お時間に余裕があるのならプログラムの構造を今一度見直すのもよいかと思います。
    • good
    • 0

Do


  If 条件 Then
    Goto NextData
  End If
  :
  :

NextData:
  次のデータ
Loop

こんな感じです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!