- 締切済み
マクロ実行中エラーが発生する
いつも回答して頂きありがとうございます。 ws.Cells(7, c).ClearContentsの箇所で『excel2010』ではエラーが発生しませんでしたが、『excel2003』ではエラーが発生しました。(オブジェクトが・・・・みたいなコメント有。)原因は何でしょうか?御指導の程宜しくお願い致します。 Sub 特定のシート以外の最終履歴と次回予定日を算出する() Dim ws As Worksheet For Each ws In Worksheets If ws.Name <> "一覧" Then If ws.Name <> "メニュー" Then Dim c As Integer c = 3 Do While ws.Cells(2, c).Value <> "" With ws.Cells(6, c) .FormulaR1C1 = "=MAX(R8C:R10000C)" If .Value = 0 Then .Value = "履歴無し" ws.Cells(7, c).ClearContents'ここでエラーが発生 Else .Value = .Value ws.Cells(7, c) = DateAdd("d", ws.Cells(5, c), DateAdd("m", ws.Cells(4, c), DateAdd("yyyy", ws.Cells(3, c), ws.Cells(6, c)))) End If End With c = c + 1 Loop End If End If Next End Sub
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 一般的に、VBAは、上位互換はあっても、下位互換はないと思ったほうがよいです。 だから、不具合があった場合は、そのままブックを持ってくるのではなくて、一旦、コードをエクスポートするなりして、テキスト化させるなりして、新しいブックで作りなおすとかしたほうがよいですね。それから、一旦、実行する前に、このレベルなら、ステップマクロで、確認したほうがよいかもしれません。 #1さんのおっしゃる現象は確かにあるのですが、Excelの場合は、ちょっと事情が違うこともあるようです。 なお、下位バージョンから上へは、記録マクロ以外なら、だいたい動きます。 ただ、それ以上、そのコードでは、何も言えません。本当は、コード全体をを直したほうがよいと思いますが、それ自体は、私が、あれが悪いこれが悪いと言ったところで、いろんな人の書き方が混じり合っているし、それで混乱させても、解決からは遠くなりそうな気がします。もともと、全体的な位置関係や処理は、最初の時から私は把握できていませんし、その処理自体が有効かそうでないかさえ、はっきり言えませんでした。 VBAの書き方から教えてくれる人は、めったにいませんし、掲示板の趣旨が違いますね。 前回(7790178)の >ファイルオープン時にApplication.Runで3つのマクロを実行させているのですが のほうは、締まりましたが、それで、それ自体は解決したのでしょうか? なぜ、Application.Run なのか、コードを見る限りでは、理由が分かりませんでした。他のブックからの制御ということになるのだとは思いますが、そういうコードの場合は、少し書き方が違ってくることが多いのです。
- bon459
- ベストアンサー率36% (4/11)
以前、エラーになると思えない箇所でエラーになったときの経験からです。 一度確認して見てください。 2003側のVisualBasicエディタでツール→参照設定を選択します。 ここに参照不可と表示されているライブラリが無いでしょうか? そうであれば、参照不可となっているライブラリのチェックを外し、 同じ名称のバージョン違いのライブラリにチェックを付け直すことで 動いたことがあります。
お礼
回答ありがとうございました。 長い間、返事もせずすみません。たぶん、何もデータがないセルをエクセル2003ではClearContents出来ないからだと思います。ですので、一旦、何らかのデータを入れてやることにしました。処理手順が一つ増えるのであれなんですが、一応解決しました。
お礼
返事が遅くなってすみません。たぶん、エクセル2003ではデータがないセルにClearContentsは使えないって事なんだと思いました。ですので、一旦何らかのデータを入れた後にClearContentsを実行するようにして問題が解決しました。 あと、前回の質問での「Application.Runを3つ連続して実行する」かですが、ただ単に、全てのマクロを1つの記述で書ききることが、自分には難しいからです。前回の質問まで心配して頂きありがとうございました。