« 改行記号と段落記号について | トップページ | 「コントロール」のおすすめ入門書 »

2009年1月 5日 (月)

On Errorの設定があるのに、エラー時に認識されない場合

自分用のメモです。背景の詳細説明は省略。

●状況
ループ処理のなかで、連続してエラーと判定される状況下で起きました。

エラーが起こるのは、下記のコードの着色部分です。

ファイル名を書き換える(ファイルを移動する)プログラムの一部です。

For Cnt1 = 0 To myCount

    If Len(file_Name(Cnt1)) = 0 Then GoTo n
   
    myOldName = folder_Path & "\" & file_Name(Cnt1)  '移動元ファイル
    myNewName = myNewPath & "\" & file_Name(Cnt1)    '移動先ファイル
    If Len(Dir(myOldName)) > 0 Then
        Name myOldName As myNewName
    Else
        GoTo errorhandler
    End If   
n:

Next Cnt1 

1度目のエラーはエラーと認識されるために、errorhandlerに制御が進むのですが、2度目のループに入ったときには、エラーが起きたときに「エラー表示」ウィンドウが立ち上がって、プログラムが終了してしまいました。

つまり、エラーが起きるのに、errorhandlerに制御が進んでくれないという状態でした。

●プログラム文

On Error GoTo errorrhandler

・・・・・・

errorrhandler:

    If Err = 58 Then

        GoTo n

        End

    End If

nの記号は、特定の場所への制御を飛ばす場合のしるしです。

エラーが起こった数行後のコードに進みます。

●解決策

errorrhandler:

    If Err = 58 Then

       Resume Next

        End

    End If

にしたら、解決しました。

resume nextの場合、どちらにしろnのしるしのところへ進むので、処理としては同じものと思うのですが、なぜかうまくいくようになりました。

とりあえず解決してよかったのですが、解決できた理由はよくわかっていません。

« 改行記号と段落記号について | トップページ | 「コントロール」のおすすめ入門書 »

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/519619/43648591

この記事へのトラックバック一覧です: On Errorの設定があるのに、エラー時に認識されない場合:

« 改行記号と段落記号について | トップページ | 「コントロール」のおすすめ入門書 »

感謝リスト

  • 河崎有美さん
    このブログを紹介いただいております。特許翻訳学習者&特許翻訳者支援を目的としたサイトです。特許翻訳に必要と思われる知識や情報を見つけるのにお役立てください。
  • Happy Freelancers
    特許翻訳家の水野麻子さんとともに、特許翻訳者として、社会貢献をする方法を模索しながら運営しているボランティアサイトです。応援をよろしくお願いします。
  • 水野麻子さん
    特許翻訳やワードマクロの「心」を教えていただきました。実は、このブログの生みの親です。
  • 畠山弁理士
    マクロの登録方法を動画で解説されています。役立つマクロや特許翻訳の情報が満載です。
  • スピカさん
    思い出や日常生活が面白おかしく綴られています。新鮮な切り口をご堪能あれ!!
  • Even Keelさん
    すごく素直な日記に癒されます。紹介されているサイトや書籍も心に響きます。
  • JUMAさん
    レイアウト表示の修正方法について、アドバイスをいただきました。ありがとうございました。
  • keebさん
    グーグル検索マクロを作成した際に、アイディアをいただきました。ありがとうございました!