|
>>これで、ファイル1が指定されたパスに無い場合、
>>GoTo Next_1で次の操作が可能になりました。
>
>個人的には、GoTo ステートメントは、多用すると複雑になりますし、エラーチェ
>ックも困難になります。
Fileが開けないErrorになる場合は、いろいろなCaseがあって、
Fileが存在しないというのは、その中のひとつに過ぎません。
いちいち、全部のCaseを洗い出してCheckするとなると
工数もかかりますし、何より複雑になってわかりづらくなります。
また、Fileを開く時にはOpen MethodをCallした時点で、
Fileの存在Checkは内部で自動的に行っているので
事前にFileの存在Checkをするだけ無駄ともいえます。
こういう場合、On Error Statementをうまく使うほうが
はるかに望ましいです。
Gotoが嫌なのであれば、
On Error Resume Next
Set wbkTarget = Workbooks.Open(〜)
On Error Goto 0
If Err.Number = 0 Then
' Error処理
Else
' 正常処理
End If
という使い方もありますね。
というよりも、GOTOでわかりにくくなるような長いProcedureなら
分割してしまえば、GOTOを使っても可読性は落ちないはずです。
(1Procedureに何度もGotoを使うような長いProcedureを作ること自体が
そもそもの問題といえます。)
また、Fileの存在Checkがどうしても必要であれば、(めったにないと思いますが)
Dirを使うのは最悪で、FSOのFileExistを使用するべきですね。
DirだとExcelで開けるFileでも、ErrorになってしまうCaseが存在しますので・・・
|
|