• ベストアンサー

GOTO命令

現在GOTO命令を用いて、処理をしようとしていますが、一つの関数内でGOTO命令はOKなのですが、GOTO命令先の関数が違う場合はGOTOは使えないのでしょうか? つまり Private Sub CommandButton1_Click()   処理 back: end Sub Private Sub CommandButton2_Click()   処理 goto back end Sub 上記のようにGOTOのラベルが他の関数内にある時はつかえないのでしょうか?何か方法ないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんばんわ。 ヘルプでも確認できますが、 ”GoTo ステートメントの分岐先は、同じプロシージャ内だけです。他のプロシージャには分岐できません。” とあります。 つまり、他の関数へのGOTOはできないということです。 どうすればよいかというと Private Sub CommandButton1_Click()   処理A back: 処理B←ここをプロシージャ(関数)化します。 end Sub ↓例ですが、 Private Sub CommandButton1_Click()   処理A Call Syori End Sub Private Sub CommandButton2_Click()   処理A Call Syori End Sub Public Function Syori() 処理B End Function といった感じになります。 この時、処理B に、変数を渡したければ、その旨記述をすれば、OKです。 では。

その他の回答 (3)

noname#4564
noname#4564
回答No.4

過去に類似の質問がありましたので、参考URLを読んでみてください。 私見では、例外処理以外でGoto文が必要になるなら設計に問題があると思います。 (私個人の「思い」なので、客観的に正しいかどうか何とも言えませんが)

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=443600
  • nagare
  • ベストアンサー率33% (280/831)
回答No.2

残念ながらできません (理由はスタックがおかしくなるので暴走します) goto back以降を関数化して CommandButton1_ClickとCommandButton2_ClickからCALLするのが美しいコーディング かな(ボタンを押されたら、最後に同じことをしたいのでしょう?)

  • fuji1
  • ベストアンサー率29% (109/371)
回答No.1

こんばんわ。 GOTOで飛べるのは、同一関数内だけです。 以前は、プログラム中だったら大丈夫だったのですが。 対応策としては、関数の戻り値を使って、呼び出し側でジャンプすることでできますよ。

関連するQ&A