- ベストアンサー
マクロエラーやストップする問題の回避方法
- マクロを使用する際に、途中で止まってしまうエラーが発生している問題について、回避方法を教えてください。
- マクロ言語の理解が不十分なため、エラーが発生している可能性があります。データの内容によっては、正常に動作することもあるようです。
- 特定の部分で停止する黄色反転のエラーについて、ウィンドウズ2000とエクセルの組み合わせで問題が発生している可能性があります。該当部分の修正や代替手段の検討が必要です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
単純にC列にある 0 を消したいだけなら Sub Test() Columns("C:C").Replace What:="0", Replacement:="", LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False End Sub で良いと思います。
その他の回答 (2)
- papayuka
- ベストアンサー率45% (1388/3066)
ちなみに無理やりエラーでも進めるなら下記を一番上に追記します。 On Error Resume Next つづくの後の処理によっては中途半端に処理が実行され、困った事になる可能性があります。
補足
ありがとうございます。 教えて頂き、だんだん様子が見えてきたような気がします。 つまり、自分で作ったマクロは、”作った時点でのデ-タ”に散在した”0”と”0”ではないところに対応したマクロだった。(と思います)-だから、同じマクロを次のデ-タに適用すると、散在する位置が違うからエラ-になる(と思います) そこは、構文を知らない者の、限界点(と思います) それでも、めげずに結果をだすなら、一回目に教えて頂いた方法でいいのかなと(思います) その場合、挿入する区切りの場所がわかるかどうかですが、試してみます。 ありがとうございました。 感謝して、とりあえずポイントにさせていただきます。
- papayuka
- ベストアンサー率45% (1388/3066)
#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
補足
ありがとうございます。 エラ-は、次のとおりです。 ---実行時エラ-’91’ オブジェクト変数または、Withブロック変数が 設定されていません。---(終了-デバッグ-ヘルプ。) 何かの構文を追記すれば、エラ-回避できるケ-スでしょうか。