• ベストアンサー

VBAのエラー処理について

EXCEL VBAのエラー処理で On Error GoToを使いましたが、 あるPCでは正常にエラー処理を行うのに、違うPCでは、 実行時エラー91 オブジェクト変数またはWithブロック変数が設定されていませんというエラーが起き、エラー処理行に行きません。 理由が分かる方、回答をお願いします。

  • hi229
  • お礼率34% (12/35)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

VBA画面で[ツール]-[オプション]-[全般]の「エラートラップ」が「エラー発生時に中断」になっていると見た。

hi229
質問者

お礼

まさにその通りでした。 エラー対象処理外のエラーで中断にしたところ動作しました。ありがとうございました。

その他の回答 (1)

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.1

Excelのバージョンは合ってますか? たとえばExcel97とExcel2000とかの担ってませんか? Excelと言えどバージョンごとに使えるステートメントが微妙に違います。その所為かなと思います。

関連するQ&A

  • ExcelVBAでのエラー処理について

    Excel2003のVBAでマクロを作成しています。 On Error Gotoを使用して開こうとしたブックを開こうとして目的のブックがなかった場合のエラー処理コードを書いたのですがうまくエラー処理行に飛んでくれず、実行時エラーのメッセージがでてマクロがとまってしまいます。 コードを見返したところ記述ミスはないようなのですが、考えられるミスは何なのでしょうか?

  • Access(VBA)のエラー処理

    いつもお世話になりますm(__)m Access2003(VBA)のエラー処理について教えて下さい。 いつも、エラー処理は、各private sub毎に記述しています。 例えば private sub A() on error goto ErrShori (処理など) exit sub ErrShori: (エラー処理) end sub private sub B() on error goto ErrShori (処理など) exit sub ErrShori: (エラー処理) end sub 上記のようにしていますが、エラー処理は共通で、どうにか1つの記述(?)で全てのプロシージャに対してエラー処理が出来ればと思っています。 いろいろ調べましたが見あたらず、今は一つ一つのプロシージャに「on error...」と書いています。 MDBファイル単位で「エラーがあるとこれを実行」のような共通のエラー処理を実装する事は出来ないのでしょうか? お詳しい方、是非ご教授下さい。可能であればサンプルを記述頂くと助かります。 宜しくお願い致しますm(__)m

  • 【VBA】On Error をつけても「Match

    【VBA】On Error をつけても「Matchプロパティを取得できません」を回避できません。  今晩は、質問させていただきます。どうぞよろしくお願いいたします。 環境:エクセル2010でございます。  下のようにコーディングしておりますが、「Matchプロパティを取得できません」が出てコード実行が中断されてしまいます。 取得できなかった場合の対処は既に(更にその下に)コーディングしておりますので、Matchのエラーをスルーさせたいのですが。。。 On Error GoTo error1 line1 = (Application.WorksheetFunction.Match(strTime, WS_data.Range("G:G"), 0))          '↑この行でエラーになります。 error1: On Error GoTo 0  On Error GoTo error1をOn Error Resume Nextに変えても同じ症状になってしまいます。 もしお詳しい方がいらっしゃいましたらアドバイスいただけないでしょうか。  どうぞよろしくお願いいたします。

  • Excel VBAマクロで実行時エラー'91'が出てしまいます。

    実行時エラー'91' オブジェクト変数またはWithブロック変数が設定されていません というエラーが出ます 同じような質問をいくつか見つけました。 FindでTRUEが見つからなくなったときの処理が問題?だと思うんですが、それを解決するために、どうしていいか分かりません。 よろしくお願いします。 AL列にTRUEとある行を削除するマクロです。 処理が正常に終わり、最後にエラーが出ます。 Sub 行削除() lastrow = Range("AL1").End(xlDown).Row i = 1 Dim trow As String Do While i < lastrow trow = Range("AL:AL").Find(What:="TRUE").Row Rows(trow).Delete i = i + 1 Loop End Sub

  • ExcelのVBA で実行エラー5

    ExcelのVBA で実行時エラー5のプロシージャの呼び出し、または引数が不正です。 と出るのですが、何が悪いのでしょうか? 引っかかる部分は下のコードの「tf.Writeline (Wl)」のところです。 'On Error GoTo ErrorHandler tf.Writeline (Wl) On Error GoTo 0 Wl = "" C = C + 1 End If 回答よろしくお願いします。

  • VBA エラー処理

    Excelにて作業を行っているワークシートとは別のワークシートに作成されているデータを画像として貼り付ける作業を行っている時にエラーが発生します 内容としてはsheet2に作成されているセルの内容を参照して画像として貼り付ける作業です コードを下記のように作成しました Sheets(2).Range("A1:DO4").CopyPicture Appearance:=xlScreen, Format:=xlPicture これをsheet1から実行させると正常に行われたり、エラーになってコードが止まる事が起きたりします Excel2013で実行して失敗になった場合は RangeクラスのPasteSpecialメソッドが失敗しましたになります Excel2003で同じコードを実行して失敗になった場合には 実行時エラー'1004' クリップボードを空に出来ません となります どちらのExcelでもエラーになった際に、デバッグを選択しVisual Basic Editor画面にして上部の継続ボタンを押せば画像が正常に貼り付き、コードが最後まで動作します ネットで調べてみたんですがエラーになった場合、再度その部分を実行させるには On Error Resume [0] なるコードを実行すれば良いという物を見つけて Sheets(2).Range("A1:DO4").CopyPicture Appearance:=xlScreen, Format:=xlPicture の前に書き込もうとしたんですが、On Error Resume [0]の文字がエラーになってOn Error Resumeの後には[0]は指定できないようです このようにエラーが出た場合、再度同じコード文を実行させるにはどうしたら良いのでしょうか? また、このようなエラーが発生した場合 On Error GoToを使ってsleepで適度なタイムラグを発生させてからペーストを行わせれば良いのか?とも思いコードを書いてみたりしたのですが私では、うまく動作させる事が出来ません この画像をペーストする時のエラーを回避させて最後までコードを実行させるにはどのようにしたら良いのでしょうか よろしくお願い致します

  • マクロ実行時のエラー処理について

    VBAのエラー処理の方法について教えて下さい。 エクセル2007を使用しています。 VBAでシートの名前を以下のように変更しようとしています。 シート名1 ← "1" シート名2 ← "2" シート名3 ← "3" 記述内容は以下の通りです。 '〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 On Error GoTo Err1  For i = 1 to 3   Sheet(i).Name = i  'Sheet(i)の名前を変数"i"に変更する。 Err1:   Sheet(i).Delete   '上記処理でエラーが発生した場合はそのシートを削除する。  Next i '〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓  以上の処理を実行しようとした場合、同じ名前の既存シートが存在していたり、シート名に含まれてはいけない文字列が含まれていたりした場合、エラーが発生しますが、On Errorステートメントを使用してエラーが発生した場合の処理を実行したいのですが、1回目のエラーについてはOn Errorが働くのですが、2回目になるとOn Errorが働きません。  2回目以降のエラーも1回目と同様に処理したいのですが、コードの記述の変更方法や又は他の処理方法を教えて下さい。 エラーの種類は以下の通りです。 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 実行時エラー'1004': シートの名前をほかのシート、Visual Basicで参照されるオブジェクト ライブラリまたは ワークシートを同じ名前に変更することはできません。 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 以上。 尚、On Error Resume Nextは処理を無視するだけなので使用したくありません。 以上、宜しくお願い致します。

  • Excel VBA ハイパーリンクの追加でエラー

    Excel VBAで下記のようなコードを書いて、ファイルに対するハイパーリンクを追加したいのですが、実行時にエラーとなってしまいます。 どんな原因が考えられるか教えていただけますでしょうか。 よろしくお願いいたします。 <実行環境> Excel 2003 <コード>  With ActiveSheet .Hyperlinks.Add Anchor:=.Cells(RowNum, 1), Address:=FilePath End With <エラー> 実行時エラー '1004' アプリケーション定義またはオブジェクト定義のエラーです。 <補足> Excel2000の環境で実行すると正常に動作します。バージョンの違いで動作に差がでるのでしょうか? またRowNumとFilePathには有効な値が入っていることはステップ実行で確認しています。

  • エクセル VBA コンパイルエラーについて

     エクセル2010 VBAにて制作中のファイルについて皆様のお知恵を頂きたいと思い投稿致しました。    私のPC【Windows XP SP2 エクセル2010】では正常に作動するマクロが  他のPC【Windows XP SP2 エクセル2010】ではエラーになります。  エラーメッセージは      「オブジェクトが存在しません」  と出ます。  エラー箇所は     intA = Format(intB,"00")  です。  intA,intBについては変数宣言済です。    皆様宜しくお願いいたします。

  • EXCEL VBA のエラー処理

    EXCEL VBA でセルの文字列を読み(基本的に2007/05/08のような日付データが入っている)、 もしそれ以外のデータ("あいう"のような文字列)が入っていた場合はエラールーチンに飛ばして処理をしようと思ったのですが、 エラーが発生して、発生箇所が黄色く反転表示され、止まったままになってしまいます。 エラールーチンに飛ばすためにはどうしたらいいのでしょうか? Sub test() Dim LineNo As Integer Dim WrkDate As Date On Error GoTo Err LineNo = 1 WrkDate = Range("S" & LineNo).Value ←ここが黄色く反転表示される。 WrkDate = WrkDate + 7 Range("X" & LineNo).Value = WrkDate GoTo Owari Err: (処理ルーチン) Owari: End Sub

専門家に質問してみよう