Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
With を抜けるとエラー?
投稿日時: 18/10/17 18:37:06
投稿者: rensou

久しぶりに投稿させていただきます。ご指導よろしくお願いいたします。
 
先日、ネット上で気になる内容にぶちあたりました。誰かが提唱したコーディングのガイドラインの一つで、With〜End With の途中で抜けないこととありまして、例では Exit Sub で抜ける記述はよろしくないとのこと。Exit Subどころか、自分は気にせずに Exit For、Exit Function などでよく抜けてます。可読性や処理速度ならあまりひっかからないのですが、エラーの可能性があるとのことなので、気になってます。もし本当なら今後考えていかなければと思ってます。本当のところどうなんでしょうか?もし理由があるならご指導ください。よろしくお願いいたします。

回答
投稿日時: 18/10/17 20:31:09
投稿者: WinArrow
投稿者のウェブサイトに移動

具体的な例を掲示して質問できませんか?
 
私は、With 〜End Withの中から、「抜ける」という意識はしたことがないです。
ましてや、Exit For、Exit Sub などは、次元が違います。
 
With 〜End Withの中から、Exit Subは、頻繁に使っています。
それが理由で、エラーになったこともないです。
 
でも、
特に注意しているところは、
 
With myDB.Execute(SQL)
    Do Until .Eof
        If 条件 Then
          'OK処理
        Else
            Exit Sub '@  これはよろしくないです。
        End If
        .MoveNext
    Loop
    .CLose
End With
 
 
 
 

投稿日時: 18/10/17 20:48:23
投稿者: rensou

早速の回答、ありがとうございます。
サイトをみつけまして、書かれていた例は、以下の通りです。
 
With hoge
 .A = 2
 .B = 3
 Exit Sub
End With
 
 
 

回答
投稿日時: 18/10/17 22:06:15
投稿者: WinArrow
投稿者のウェブサイトに移動

先程、例示したコードの中の「@よろしくない」部分ですが、
With 〜 End Withの中に記述していますが、
With句を使わなくても、「よろしくない」です。
 
後から、考え直しました。
 
 
ところで、

With hoge 
 .A = 2 
 .B = 3 
 Exit Sub 
End With 

このコードのどこが問題なんでしょう?
 

投稿日時: 18/10/17 22:30:19
投稿者: rensou

本当に何が悪いのか自分もよくわかりません。
 
ところで、For〜Nest の中でも Exit Sub を使うのはよろしくないのでしょうか?よろしければ、ご教授のほどよろしくお願いいたします。

回答
投稿日時: 18/10/17 22:41:57
投稿者: WinArrow
投稿者のウェブサイトに移動

rensou さんの引用:
本当に何が悪いのか自分もよくわかりません。
 
ところで、For〜Nest の中でも Exit Sub を使うのはよろしくないのでしょうか?よろしければ、ご教授のほどよろしくお願いいたします。

 
条件によりけりです。
ループを抜けるに値する条件ということであれば、よいと思いますよ。
致命的なエラーが出たのに、これ以上処理を続ける方が無駄ではないか
ということです。
ただ、黙って抜けるのはよくないですね・・・
何らかのメッセージを表示するなり、アナウンスしなければいけないと思います・・・
  
  

投稿日時: 18/10/17 22:45:00
投稿者: rensou

色々教えていただきありがとうございました。