【VBA】On Error をつけても「Matchプロパティを取得できません」を回避できません

このQ&Aのポイント
  • エクセル2010で、VBAコードを実行する際に「Matchプロパティを取得できません」エラーが発生し、コードの実行が中断される問題が発生しています。
  • このエラーをスルーさせるために、On Errorステートメントを使用してエラーハンドリングを行いましたが、エラーが回避できずに同じ症状が続いています。
  • この問題について詳しい方からのアドバイスを求めています。エラーハンドリングの方法や解決策について教えていただけると助かります。
回答を見る
  • ベストアンサー

【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に変えても同じ症状になってしまいます。 もしお詳しい方がいらっしゃいましたらアドバイスいただけないでしょうか。  どうぞよろしくお願いいたします。

  • MKT_
  • お礼率99% (329/330)

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

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.1

エラートラップ自体が無効になっているように思えます。 VBEからツール→オプションでオプション画面を開き「全般」タブを見てください。 「エラートラップ」の項目が『エラー発生時に中断』になっていませんか? 『エラー処理対象外のエラーで中断』を選択するとエラートラップが有効になります。 なお、Math自体は変数:strTimeが文字列でWS_data.Range("G:G")のデータが日付のシリアル値なのでエラーが発生しているように思えます。

MKT_
質問者

お礼

 どうもありがとうございます!m(_ _)m >「エラートラップ」の項目が『エラー発生時に中断』になっていませんか?  はい、なっておりました。m(_ _)m変更すると、うまくスルーしてくれる様になりました^^ 存じませんでしたので非常に助かりました。この項目の使い方を覚えておきます。  この度はお教えいただき誠に助かりました。どうもありがとうございました!!

関連するQ&A

  • VBAでのMATCH関数の使用

    現在,VBAにてシートの比較プログラムを行っておりますが,その中で検索範囲を示すRangeに名前を使用したいのですがエラーでうまくいきません。 エラーは 「実行時エラー:1004 WorksheetFunctionクラスのMatchプロパティが取得できません」 とでます。 記述は Application.WorksheetFunction.Match(Cells(r, 132), Range("リース型具Key1"), 0) としており,”リース型具Key1”が事前に名前登録してある名前です。 方法をご存知の方,よろしくお願いします。

  • on error 処理に関して

    on error goto での処理ルーチン内で、 さらに on error goto を出すことは可能でしょうか。 それとも、一度on errorを設定すると、エラーが発生した後では変更は不可なのでしょうか。 やりたいことは、 1回目と、2回目、3回目以降でやることとを変えたいのです。 例えば、メッセージを変えるとか。 この場合、 エラー処理の中で、何回目かを聞くことで、メッセージを変えることは出来ると思うのですが、 それはやらず、 他にも色々やることが多いので、別処理として飛びたいのです。 以下のようなイメージです。 err1: on error goto err2 resume next err2: on error goto err3 resume next err3: resume next 宜しくお願いします。

  • MATCH関数について

    Dim 日付 As Range Dim n As String, ans As String Set 日付 = Worksheets(1).Range("c3:ag3") n = InputBox("日付は") ans = Application.WorksheetFunction.Match(n, 日付, 0) MsgBox (ans) 現在VBを勉強しています。 上記のように作りましたがエラーが出ます。 実行時エラー1004 worksheetfunctionクラスのMATCHプロパティを取得できません。 となってしまいます。 c3:ag3には日付が並んでいます。 どなたかわかる方がいましたら、お願いします。

  • Access VBA にて on error goto がたまに機能し

    Access VBA にて on error goto がたまに機能しないPCがあるます。 具体的には、on error gotoのコーディングを無視して、エラーのポップアップが表示される 何か対応する方法は、ありますか? 環境 ネットーワークにあるmdbをドライブに接続して、Accessを起動しています。   Windows2000(sp4)+Access2000(sp3) 他のPCでは、問題ありません。PCは、イメージをクローンして作成していますので、同一です。 ※コーディングイメージ Private Sub 稼働時間_AfterUpdate() on error goto ERR_稼働時間 Dim errcnt as integer errcnt = 0 DoCmd.GotoRecord A_FORM,"時間入力",A_NEXT <----- エラーのポップアップが表示される if errcnt = 1 Then DoCmd.GotoRecord A_FORM,"時間入力",A_PREVIOUS end if exit sub ERR_稼働時間: errcnt = errcnt + 1 resume next end sub

  • エクセルVBAでOn Error Resume Next

    エラーを回避するためにOn Error Resume Nextを使用することがありますが、その有効範囲について教えてください。 記述の在るプロシージャ内だけかと思っていたのですが、 どうも記述した以降、End Subのまでの間を超えて、そのプロシージャから呼び出す次のプロシージャ以降まで効いているみたいです。 ひょっとしてOn Error Goto 0で止めないと、連続しているプロシージャの最後まで有効なのでしょうか?

  • Onってなんでしょうか?

    私は現在、VB6を使用してプログラム開発を行っています。 「On Error」ステートメントに関して質問させていただきます。 私の管理下のソースに、   (1)「On Error Goto [行ラベル]」   (2)「On Err Goto [行ラベル]」 の2種類のステップがあり、 (2)に関しての動作が不明で困っています。 (要は「On [Object] Goto [行ラベル]」と記述した場合に、  どのように解釈されるのか分らないのですが・・・  (1)、(2)共にコンパイルは通りますが(2)の場合はエラーハンドリングはできません。) <質問> (1)「On Err Goto [行ラベル]」 と記述した場合、  どのような条件でGotoが実行されるのでしょうか?  (Errはエラーオブジェクトです) (2)「On」は   ・「On Error Goto [行ラベル]」   ・「On Error Resume Next」   ・「On Error Goto 0」  以外に使用する方法があるのでしょうか?

  • 日付の重複した場合にエラー表示をさせたい。

    以下の記述の場合、日付の重複をしてもエラーが出ません。 文字の重複はちゃんと、エラーがでました。 どのように書き換えたら、日付の重複に対してエラーが出るのか教えていただきたいです。 On Error Resume Next check = 0 check = WorksheetFunction.Match(TextBox8.Text, Range("業務報告書データ2").Columns(1), 0) On Error GoTo 0 If check > 0 Then MsgBox "この日付は、すでに入力されています。", vbExclamation, "入力エラー" TextBox8.SetFocus Exit Sub End If

  • エラー処理の中で起こるエラーを無視したい

    On Error Goto ラベル ラベル内でエラー処理をしています。 エラー処理内でエラーが起こってしまう場合は無視して続けたいのですが、 ラベルの中に、 On Error Resume Next と書いてもダメでした。 On Error Goto 0にしてもダメでした。 どのようにすれば可能ですか?

  • アクセスのVBAについて、フォームの On Error Goto についておしえてください。

    Private Sub cmd次_Click() On Error GoTo Err DoCmd.GoToRecord , , acNext Exit_Click: Exit Sub Err: MsgBox "この先にレコードがなくなると、ここをつうかするのだろうか。" Resume Exit_Click End Sub 一連の流れについて,ご解説ください。よろしくお願いいたします。

  • コンパイルエラー:が出るようになった

    Worksheets("集計型")のA列に下記DATAが合って 01 Lemurian Dreams 00:00 B列に 00:00:00 C列に 01 Lemurian Dreams を抜き出すマクロを作成しています。 こちらでマクロのコードを教えてもらって 以前は下記のマクロで問題なく抽出出来ていたのに 何故か、現在下記のコードのReplaceでエラーが出ます。 n = Len(strTime) - Len(Replace(strTime, ":", "")) コンパイルエラー: 引数の数が一致しません。又は不正なプロパティを設定しています。 原因の特定をしたいのですがアドバイスをお願いします。 Sub Chapterファイルの書き出し_準備() Set ws1 = Worksheets("集計型") Set ws2 = Worksheets("Chapter") 'DATAシートのセルを初期化 ws1.Range("B2:D100").Clear 'chapter作成の事前準備(項目ごとにセルに書き出し) Call 時間相当及びそれ以外抜き出し rc = MsgBox("時間部と記事部の書き出し処理が終了しました。" & Chr(13) & _ "間違いないか?もう一度確認ください。 !!", vbYesNo + vbQuestion, "確認") If rc = vbNo Then MsgBox "処理を中止します。", vbCritical Exit Sub Else MsgBox "処理が終了しました 処理③に進んでください。", vbInformation End If Set ws1 = Nothing End Sub Public Sub 時間相当及びそれ以外抜き出し() Dim i As Long, j As Long, v As Variant, strTime As String, n As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row v = Split(Cells(i, 1).Value) strTime = "" For j = 0 To UBound(v) If InStr(v(j), ":") Then strTime = v(j) Next n = Len(strTime) - Len(Replace(strTime, ":", "")) Cells(i, 2).NumberFormatLocal = "hh:mm:ss" Cells(i, 2).Value = IIf(n = 1, "00:" & strTime, strTime) Cells(i, 3).Value = WorksheetFunction.Trim(Replace(Cells(i, 1), strTime, "")) Next End Sub

専門家に質問してみよう