Excel VBA質問箱 IV

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

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


34277 / 76738 ←次へ | 前へ→

【47671】Re:フォルダーの作成
発言  ichinose  - 07/3/18(日) 8:26 -

引用なし
パスワード
   おはようございます。
>>私なら、
>>
>>On Error Resume Next
>>MkDir desktop & "\更に下のフォルダ"
>>On Error GoTo 0
>>
>>としますけどね!!
>
>フォルダの存在チェックだけでは甘いということでしょうか?
>On Error 〜
>は、なんとなく本質的な回避処理ではないように思えるのですが、違いますでしょうか?
>なんでもかんでも、
>On Error 〜
>で回避したほうがよいということなのでしょうか?

あっはは、私、「なんでもかんでも、On Error」なんて趣旨の発言をどこかでしましたっけ?

上記の記述を読むと、「なんでもかんでも、On Errorは使いたくない」
というような印象を受けましたよ!!

かみちゃんさんは以前にもOn Errorの件で意見交換をさせて頂いたことがありましたね?

私がファイルI/OでOn Error 〜を使うのは、基本的には、
www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=23067;id=excel
↑ここでちゃっぴさんが言っていることと同じ理由です。

>いちいち、全部のCaseを洗い出してCheckするとなると
>工数もかかりますし、何より複雑になってわかりづらくなります。

と、おっしゃっていますが、

私がちょっと言い換えればファイルI/Oや人の作った
オブジェクト等は、考え得るエラーを全部列挙する(コードでエラーチェックする)事などできない と思っています。

よって、On Error 〜で予想できないエラーも拾ってもらった方がよい というのがOn Error 〜を使用する理由です。

想定できない と言ってもエラーが発生するステートメントは特定はしていますよね?


Mkdirステートメントについても同じです。
デスクトップの下にフォルダを作るという今回の事象では、
私も既に存在するフォルダを作成しようとしている(実際には、「パスが無効です」)
以外のエラーは殆どないと思いますが、一般的にMkdirステートメントで発生するエラーとなれば、上記以外にもあるかもしれませんよ!!
FAT16やFAT32のファイルシステムを使っていれば、
作成できるファイル(フォルダ)数には、制限がありますよね?
(FAT16なんて、ルートディレクトリは512でしたっけ?)
FDにフォルダを作成するなんてことも想定すれば、もっと少ない数も想定しなければなりません(試さない方がよいですよ、FDのファイル作成数限界なんか試すとWin98辺りだとシステムに支障きたすかもしれません。以前試したら、おかしくなってOSをいれなおした覚えがあります)
On error 〜なら、これらの想定していないエラーも拾ってくれます。

ここでの投稿では、趣旨と異なれば、付けないコードを投稿する場合もありますが、
私は実務では、ファイルI/OやADOやWSHなど(想定できないエラーが発生するかもしれない事象)は、殆どラップしたプロシジャーを用意します。

Function openfile_input(filepath As Variant) As Long
  On Error Resume Next
  Dim flno As Long
  flno = FreeFile
  Open filepath For Input As #flno
  openfile_input = Err.Number
  On Error GoTo 0
End Function
上記のようなコードをCallしている呼び出し元では、戻り値でエラーチェックを行います。

>On Error 〜
>は、なんとなく本質的な回避処理ではないように思えるのですが、違いますでしょうか?
私は、この想定できないエラーも拾ってくれるようなエラー処理は、
On Error 〜を使う以外の方法があるのなら知りたいと思っています。

ON Error を使うことが「本質的な回避処理ではない」という場合も
あるでしょうね!!
0 hits

【47638】エクセルファイルのコピーと貼り付け kei 07/3/17(土) 2:12 質問
【47642】Re:エクセルファイルのコピーと貼り付け ichinose 07/3/17(土) 7:13 発言
【47649】フォルダーの作成 kei 07/3/17(土) 16:49 質問
【47651】Re:フォルダーの作成 かみちゃん 07/3/17(土) 17:24 発言
【47653】Re:フォルダーの作成 kei 07/3/17(土) 17:49 発言
【47654】Re:フォルダーの作成 かみちゃん 07/3/17(土) 18:05 発言
【47656】Re:フォルダーの作成 kei 07/3/17(土) 18:24 お礼
【47658】Re:フォルダーの作成 ichinose 07/3/17(土) 19:04 発言
【47663】Re:フォルダーの作成 かみちゃん 07/3/17(土) 22:03 発言
【47671】Re:フォルダーの作成 ichinose 07/3/18(日) 8:26 発言
【47674】Re:フォルダーの作成 かみちゃん 07/3/18(日) 11:08 発言
【47677】Re:フォルダーの作成 ichinose 07/3/18(日) 21:01 発言

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