• 締切済み

マクロのエラーの原因がわかりません。

マクロ初心者です。 下記のような簡単なマクロを書きましたが、「型が一致しません」のエラーが出てしまいます。 原因と修正方法をご教授お願いいたします。 For Each c In Range("a1:du82") If c = 1 Then  ←この構文でエラーとなります。 c.ClearContents End If Next c End Sub

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

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日ぐらいそのまま置いておいて、再度見直すのも良い。 何ヶ月何年もたって、やっとあのことかと判る場合も多い。

noname#158634
noname#158634
回答No.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 と書きましょう。