マクロエラーやストップする問題の回避方法

このQ&Aのポイント
  • マクロを使用する際に、途中で止まってしまうエラーが発生している問題について、回避方法を教えてください。
  • マクロ言語の理解が不十分なため、エラーが発生している可能性があります。データの内容によっては、正常に動作することもあるようです。
  • 特定の部分で停止する黄色反転のエラーについて、ウィンドウズ2000とエクセルの組み合わせで問題が発生している可能性があります。該当部分の修正や代替手段の検討が必要です。
回答を見る
  • ベストアンサー

マクロエラ-

初心者です。win2000,エクセルでマクロが途中で止まってしまいます。時々に、最後までいくことがありますが、8割がたは、同じところでストップします。 マクロ言語は理解できていません。 うまく完了のケ-スは、デ-タの中身次第かなと思います。 記憶では、”0”があれば、何かをするようにしたと思います。 想定外のデ-タで、とまるのなら、回避方法を教えてください。 黄色反転して、ストップする部分は、以下です。 mcr3 Range("A1").Select ActiveCell.SpecialCells(xlLastCell).Select Columns("C:C").Select Selection.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate いつもここで止まります。 ActiveCell.Replace What:="0", Replacement:="", LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False Selection.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate -----------→つずく。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

単純にC列にある 0 を消したいだけなら Sub Test()  Columns("C:C").Replace What:="0", Replacement:="", LookAt:=xlWhole, _   SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False End Sub で良いと思います。

jklnashi
質問者

補足

ありがとうございます。 エラ-は、次のとおりです。 ---実行時エラ-’91’ オブジェクト変数または、Withブロック変数が 設定されていません。---(終了-デバッグ-ヘルプ。) 何かの構文を追記すれば、エラ-回避できるケ-スでしょうか。

その他の回答 (2)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

ちなみに無理やりエラーでも進めるなら下記を一番上に追記します。 On Error Resume Next つづくの後の処理によっては中途半端に処理が実行され、困った事になる可能性があります。

jklnashi
質問者

補足

ありがとうございます。 教えて頂き、だんだん様子が見えてきたような気がします。 つまり、自分で作ったマクロは、”作った時点でのデ-タ”に散在した”0”と”0”ではないところに対応したマクロだった。(と思います)-だから、同じマクロを次のデ-タに適用すると、散在する位置が違うからエラ-になる(と思います) そこは、構文を知らない者の、限界点(と思います) それでも、めげずに結果をだすなら、一回目に教えて頂いた方法でいいのかなと(思います) その場合、挿入する区切りの場所がわかるかどうかですが、試してみます。 ありがとうございました。 感謝して、とりあえずポイントにさせていただきます。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1です。 見えている内容からだと、C列に 0 のセルが最低2つ無いとエラーになります。  'C列を選択  Columns("C:C").Select  '選択範囲内で "0" を探してアクティブ  Selection.Find(What:="0", ・・略・・).Activate Find メソッドのヘルプ抜粋  # 情報が見つかった最初のセル (Range オブジェクト) を返します。  # 条件にあてはまるセルが見つからなかった場合は、Nothing を返します。 エラーは見つからないもの(Nothing)を アクティブにしようとしているからだと思います。 ほとんどヘルプサンプルのまんまですが、Find の結果が Nothing か否かを判断して条件を分岐させる必要があります。例は C列にある 0 のセルに赤色を付けます。 こことここの間の c.Interior.ColorIndex = 3 がセルを赤色にする部分です。 Sub Test() Dim c With ActiveSheet.Columns("C:C")  Set c = .Find(What:="0", LookIn:=xlFormulas, LookAt:=xlWhole)  If Not c Is Nothing Then    firstAddress = c.Address    Do     '↓ここと     c.Interior.ColorIndex = 3     '↑ここの間にやりたい処理を書く     Set c = .FindNext(c)    Loop While Not c Is Nothing And c.Address <> firstAddress  End If End With End Sub

関連するQ&A

  • EXCEL VBAでの 文字列検索

    セル内の文字列を部分一致で検索したいのですが、 下記の構文だと、検索対象シートを選択しなくてはならないため、 PGの動きが堅くなってしまいます。何かいい方法をご存知の方、 教えてください。 Selection.Find(What:=key, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate Cells.FindNext(After:=ActiveCell).Activate

  • VBA★findを使って見つけたセルの値を取得

    AA="タナカ" Selection.Find(What:=AA, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate 自動マクロでコレをつくりました。 タナカを見つけてその隣の変数を取得するというものを作りたいと思っています。 関数で言うとVlookupでやるものをマクロ化しようとしています。 検索して見つかったセルの右隣のセルの値を取得するにはどうしたらいいですか?

  • エクセル2007のマクロ不具合について、

    次のようなマクロを「CTRL+T」のショートカットキーで作成しましたが、2回続けて実行すると2回目が違う結果となってしまいます。 1回目はちゃんと 2010/1/2 のセルがアクティブセルとなるのですが、2回目は 2010/11/2 がアクティブセルとなってしまいます。  原因と対処法があればぜひ教えていただきたいと思います。よろしくお願いします。 Sub 本日() Cells.Find(What:=Date, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate End Sub

  • 検索した後の見つかった件数を取得したい

    画像のように手作業で検索した場合、下に検索結果の個数が表示されますが これをVBA内で取得することは可能でしょうか? マクロの記録だと Sub Macro() Cells.Find(What:="a", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False).Activate End Sub となるのですが、最後に全部の個数を取得したいです。

  • EXCEL マクロでの検索をお教えください

     下記のようなマクロを使いたいのですがこの場合×があるときは良いのですが、  無いときエラーが出ます。どの様にすれば良いのかお教えください。  無いときエラーは オブジェクト変数または With ブロック変数が設定されていません。  となります。 Sub 検索()    Range("K12:K70").Select    Cells.Find(What:="×", After:=ActiveCell, LookIn:= _    xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _    xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate End Sub

  • エクセルのマクロについていくつか質問があります

    エクセルのマクロについていくつか質問があります 1 例えばA1セルが赤く塗りつぶされている場合隣のB1セルに赤と表示させたいのですが出来ますか 実際には色は何色かあります 2 セルの検索で検索であったセルを選択状態にするにはどうすればいいですか いちおう検索構文まではできてます Selection.Find(What:="6", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False, SearchFormat:=False).Activate 以上ですよろしくお願いします

  • VBAのFINDのエラーを回避したいです。

    以下のようなものを作成しましたが、1シートでは、問題なく回るものの2シート目のmをFINDしているところでエラーが発生します。原因は、該当するmが存在しないためだと思うのですが、そのような場合にエラーを回避し、次のシートへ飛びエラーが発生したシート番号を最後に表示してほしいです。 そのようなことは可能でしょうか? 読みにくいプログラムかもしれませんが、よろしくお願いします。 Dim top, m, under, bottom, cnt, she Application.ScreenUpdating = False '画面固定 cnt = Sheets.Count 'シートの数 For she = 1 To cnt Sheets(she).Activate Columns("F:F").Select Selection.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False, SearchFormat:=False).Activate top = ActiveCell.Row - 1 Rows("1:" & Format(top)).Select Selection.Delete Shift:=xlUp Range("A1").Select m = Range("E1") + 10 If m >= 60 Then m = m - 60 Else m = m End If Columns("E:E").Select Selection.Find(What:=Format(m), After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False, SearchFormat:=False).Activate under = ActiveCell.Row bottom = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row - 1 Rows(Format(under) & ":" & Format(bottom)).Select Selection.Delete Shift:=xlUp Range("A1").Select Next she End Sub

  • 文字検索マクロで質問です。

    文字検索マクロで質問です。 下記のマクロを作成したのですが、A1に検索する文字を入力してA列(A5:11700)のみを検索して該当が有ったらそのセルを色を付けし、又,該当が無ければMSG BOXで”該当なし”と表示するマクロを御教授頂けますか。 Cells.Find(What:=Range("A1").Value, After:=ActiveCell, LookIn:=xlFormulas,   LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False).Activate End Sub 以上、宜しくお願い致します。

  • Excel VBE 検索結果がない時の対処方法

    いつもお世話になっております。 Excelで簡単な文字当てゲーム的なものを作っています 文字列(100個程度)の中から、ある文字列を探し出して、そのセルの文字色を塗り替えるというマクロを組んでいます。 検索部分は下記のように記述してあります。 検索文字列がある時にはうまく動作しますが 検索文字列がない時にはエラーになります。 検索文字列がない時の対処方法を教えて下さい。 よろしくお願いします。 kaitou = Range("g2").Value Range("G2").Select Selection.Copy Columns("B:B").Select Selection.Find(What:=kaitou, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate

  • VBAエラー:オブジェクト変数またはWithブロック変数が設定されていません。

    Book1.xlsのSheet1~Sheet8を選択し、それらのシート内から、ABCDEFGという文字検索をさせたいのですが、実行させると「実行時エラー'91':オブジェクト変数またはWithブロック変数が設定されていません。」というエラーとなってしまいます。 マクロの記録で作成したマクロを元にしているので、コードがおかしいとは思えないのですが・・・ どなたか、解決策を、ご教授下さいませ。 よろしくお願い致します。 ------------------ Sub TEST() Workbooks("Book1.xls").Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5", "Sheet6", "Sheet7", "Sheet8")).Select Cells.Find _ (What:="ABCDEFG", _ After:=ActiveCell, _ LookIn:=xlFormulas, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False, _ MatchByte:=False, _ SearchFormat:=False).Activate End Sub

専門家に質問してみよう