- ベストアンサー
マクロ(#VALUE!・不適切なデータ)でマクロ処理できないのですが。
マクロ初心者のためすごい簡単な質問なのかもしれませんが、 調べたのですが、わからないのでおしえていただけたら幸いです。 ある列にたいして上から下までif文を使用しているのですが、 対象セル位置には 00:20:00 と時間とかが入っている列があり、 その列を上から下まで見ていって。 対象セル > 00:10:00 と 10分以上は処理するとゆうif文をしているのですが、 そのセルに(#VALUE!)がはいっていると、マクロがとまってしまうのですが、 どうしたらいいのかわからず 対象セル = #VALUE! でとれるかと思ったのですが、それでも取得できずそこでとまってしまいます。 どうしたら#VALUE!の場合は、スルーし処理を続行するとできるでしょうか? よければコメントお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>マクロでどうにかしたいのですが、マクロでは回避することは不可能でしょうか? ヒントです。 MsgBox IsError(ActiveCell.Value) 結果が True ならエラー値になります。 If文の使い方が理解出来ていれば対応可能かと思います。 また、TypeName()関数ならセルの型のチェックができます。 On Error ~ステートメントは、処理中に発生したエラーをトラップするための機能です。 セルのエラーチェックは別の方法で事前チェックが可能なので、処理中のエラーを拾って処理するプログラムを書く必要はありません。 通常は処理中に発生が予想される回避不能なエラーを処理するために使います。
その他の回答 (2)
- sgwjn
- ベストアンサー率70% (47/67)
マクロ初心者と言うより、プログラムの初心者ですか? マクロなら、#01の方の方法で大丈夫だと思うんですが。 マクロで、参照したセルの値をチェックせずに使っているのが問題なので、参照セルの値をIsNumeric、IsError、IsEmpty関数などで地道に検査し、1つでもTrueであれば処理を行わず次のセルに移動するようにすれば良いのでは? On Error は、VBAでの実行エラーを検出するためのもので、セルの値がプログラマの意図に沿っているかどうかなど検出してくれませんよ。 おかしなデータで無理やり処理を続行して、実行エラーを発生させれば話は別ですが。
お礼
こんばんは、お返事おそくなってすいません。 無事解決いたしましたのでありがとうございました。 プログラムの初心者ではないのですが、マクロを最近使いだしたばっかしで、 どうゆう関数があるかもわからず色々調べていたのですが、 結局わからずここに投稿したのですが、 もうちょっと調べたほうがよかったかもしれませんね。
- hana-hana3
- ベストアンサー率31% (4940/15541)
1.シートの数式でエラーにならないように処理する。 2.マクロで処理前にエラーチェックする。 という方法のどちらかを選ぶ必要があります。 マクロなら、 IsError() 関数でエラーチェックできます。
お礼
こんにちは、 回答ありがとうございます。 IsError()関数を使う手法ですが、事前にエクセルシートに, IsError()関数を代入しておき、#valueの入力がされないように僕も、 したいのですが、エクセルを修正することができないので、 マクロでどうにかしたいのですが、マクロでは回避することは不可能でしょうか? IsError()関数は1.シートの数式でエラーにならないように処理する。 にあたると思うのですが、 2.マクロで処理前にエラーチェックするとゆうのは On Error goto a とかでひっかるようにするのでしょうか? 当方もやってみたのですが、ひっかからなかったのですが、 On Error goto a の使い方がいまいちわかっていないせいなのでしょうか? できたら2番のマクロで処理前荷エラーチェックする手法をお教えいただけましたら幸いです。 よろしくお願いします。
お礼
こんばんは、お礼の返事がおそくなってしまい。 どうもすいません。 わかりやすい説明ありがとうございます。 無事解決いたしましたので本当にありがとうございました。