- ベストアンサー
数式が含まれるセル以外のクリア
数式が含まれるセル以外をクリアするマクロを作成したいと思っています。 考えたのはSpecialCellsメソッドのxlCellTypeFormulasとif...then...elseを利用して、 「セルに数式が含まれる場合は何もしない。 そうでない場合はクリアする」という内容を記述することですが、「何もしない」の部分をどう表現するか わかりません。よろしければ、ご教示いただければ ありがたいです。よろしくお願い致します
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
数式が含まれるセル以外をクリアするのでしたら、 定数の入ったセルに対してClearContentsすれば いいのかと思います。 Cells.SpecialCells(xlCellTypeConstants).ClearContents で良いように思いますが。 >「セルに数式が含まれる場合は何もしない。 >そうでない場合はクリアする」という内容を記述する >ことですが、「何もしない」の部分をどう表現するか 何もしないなら、何も書かなければよいのです。 With Range("A1") If .HasFormula Then Else .ClearContents End If End With または 数式以外ならクリアするという表現にするとか。 With Range("A1") If Not .HasFormula Then .ClearContents End With
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
ちょっと見慣れないかもしれないメソッド Intersectを使います。 xlCellTypeFormulasのセルに含まれていないか、という判定に使います。 A1:C8の範囲を例とします。 Sub test01() Dim cl As Range Set fa = Range("a1:c3") Set f = Range("A1:C3").SpecialCells(xlCellTypeFormulas, 23) For Each cl In fa Set u = Intersect(cl, f) If u Is Nothing Then cl.ClearContents End If Next End Sub
お礼
ご回答ありがとうございます! こういう方法もあるんですねぇ。 参考にさせていただきます。 ありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >「セルに数式が含まれる場合は何もしない。そうでない場合はクリアする」 ロジックとしては、 If Not ..... Then '実行 End If なのですが、SpecialCells は、もともと、一括選択する方法なのですから、それを反転して、For Each ~ Next などを使っても、あまりうまくないと思います。一般的に、数式の反対になるもの、Contstant ではありませんか? (※オブジェクトの場合は、オブジェクトだけで削除します。) Sub TestSample() On Error Resume Next ActiveSheet.Cells.SpecialCells(xlCellTypeConstants).ClearContents On Error GoTo 0 End Sub
お礼
ご回答ありがとうございます! constantsを使えば式が含まれる部分も クリアされると思ってました。 おかげさまで問題解決しました。 ありがとうございます。
- dober-o
- ベストアンサー率59% (260/439)
Then と Else の間に何も入れないでOKです それか IF ~ Then の条件を否定形に変えるか(Not使用) で Else 以下を省略でも可能でしょう
お礼
ご回答ありがとうございます! 参考にさせていただきます。
- OsieteG00
- ベストアンサー率35% (777/2173)
条件式自体にNotをつけてthenとelseを逆転させるか、thenの直後に何も書かないですぐにelseにすればよいです。
お礼
ご回答ありがとうございます! 参考にさせていただきます。
お礼
ご回答ありがとうございます! constantsを使えば式が含まれる部分も クリアされると思ってまして。 おかげさまで問題解決できました。 丁寧なご回答、ありがとうございました。