- 締切済み
マクロのエラーの原因がわかりません。
マクロ初心者です。 下記のような簡単なマクロを書きましたが、「型が一致しません」のエラーが出てしまいます。 原因と修正方法をご教授お願いいたします。 For Each c In Range("a1:du82") If c = 1 Then ←この構文でエラーとなります。 c.ClearContents End If Next c End Sub
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() Dim c As Range For Each c In Range("a1:d8") If c.Value = 1 Then c.ClearContents End If Next c End Sub なら動いた。小数例テストで結果も思うとおりのようだ。 ーーー (1) Dim c As Range を入れろ (2) c.Value のValueを入れろ (3)質問にはエクセルのバージョンを書け(duが気になる) (4)データの性格にも注目を。例えばセルの値が文字列の1であるとか。 プログラムばかり注目するな。データによっては、実行結果がそうなるように思い込んでいても、そうならないで、おかしいと思うことがある。 初心者はあれこれ変えてみて粘れ(プログラムやデータを少し変えて、あれこれやってみよ)。直ぐ質問していては力が付かない。1日ぐらいそのまま置いておいて、再度見直すのも良い。 何ヶ月何年もたって、やっとあのことかと判る場合も多い。
そのコードを実行してもエラーは出ません。 必要な情報を省いていますよね?初心者ならどこが必要な部分か分かるわけがないのだから、勝手な判断で省略せずきちんと書いてください。 ただしそのコードだけでも訂正すべき点はあります。 >For Each c In Range("a1:du82") >If c = 1 Then 慣れるまでは、暗黙のプロパティでも省略せず書くこと。理由は上記と同じです。初心者のうちは、デフォルトだからと言って省略しないように。 For Each c In Range("a1:du82").Cells If c.Value = 1 Then と書きましょう。