Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3836 / 13645 ツリー ←次へ | 前へ→

【59908】異なるマクロにあるGOTO先へ飛びたい 山野 09/1/17(土) 22:50 質問[未読]
【59909】Re:異なるマクロにあるGOTO先へ飛びたい 横入り 09/1/17(土) 23:49 回答[未読]
【59910】Re:異なるマクロにあるGOTO先へ飛びたい ichinose 09/1/18(日) 8:06 発言[未読]
【59911】Re:異なるマクロにあるGOTO先へ飛びたい 横入り 09/1/18(日) 12:39 発言[未読]

【59908】異なるマクロにあるGOTO先へ飛びたい
質問  山野  - 09/1/17(土) 22:50 -

引用なし
パスワード
   マクロaaaのなかでマクロbbbを実行します。
マクロbbbのコードの一部にはgoto JUMP1という文があり
このJUMP1はマクロaaaにあるようにしたいのです。
以下のようにコードを書くとエラーがでました。
どのようにすればいいでしょうか?

sub aaa()

  'マクロbbbの実行
  bbb

 JUMP1:
:
sub


sub bbb()

 goto JUMP1

sub

【59909】Re:異なるマクロにあるGOTO先へ飛びたい
回答  横入り  - 09/1/17(土) 23:49 -

引用なし
パスワード
   on error goto JUMP1 としておいて
bbbのなかでError ステートメントを使って擬似的にエラーを発行すれば、
ジャンプできますね。

【59910】Re:異なるマクロにあるGOTO先へ飛びたい
発言  ichinose  - 09/1/18(日) 8:06 -

引用なし
パスワード
   ▼山野 さん:
おはようございます。

>マクロaaaのなかでマクロbbbを実行します。
>マクロbbbのコードの一部にはgoto JUMP1という文があり
>このJUMP1はマクロaaaにあるようにしたいのです。

ふ〜ん、ここでGoto文論議をする気はありませんが、
このようなコードを書かないように
40年以上前にダイクストラが構造化プログラミングを
提唱したと思いますが、いかがですか?


>
>sub aaa()
>:
>  'マクロbbbの実行
>  bbb
>:
> JUMP1:
>:
>sub
>
>
>sub bbb()
>:
> goto JUMP1
>:
>sub

これ、
Sub aaa()
  Dim result As Long
  result = bbb
  If result = 0 Then
    MsgBox "bbbで0が返った"
    End If
  MsgBox "ccc"
End Sub
Function bbb() As Long
  bbb = Int(Rnd() * 2)
End Function

bbbから返ってくる値によって、aaa内でIf文等で
分岐すれば、同じことが出来ますよね?

これらのことが分かっていて、
尚、処理速度やメモリー消費が少ないからという理由で
Goto文を使いたいというなら、VBAではなく、他の処理速度が
速い言語を使うことをまず考えたほうが良いと思いますけどねえ!!

このサイトでもGoto文を使用したコード例は、少ないけれど、
極たまに見かけますが、それは、Goto文を使った方が分かりやすい
とかコードがすっきりするというような例で
ご質問のようなコードが分かりづらくなるような使い方ではありません。


私自身は、Goto文絶対不使用論者ではないけれど、
構造化プログラミング可能言語で使ったことはありませんね!!

【59911】Re:異なるマクロにあるGOTO先へ飛びたい
発言  横入り  - 09/1/18(日) 12:39 -

引用なし
パスワード
   ichinose さんに同感です。
つい魔がさして、動作は正しいがまったく反対方向の回答をしてしまったです。
取り消します。
スパゲッテイはおいしくないです。

3836 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free