• ベストアンサー

数式が含まれるセル以外のクリア

数式が含まれるセル以外をクリアするマクロを作成したいと思っています。 考えたのはSpecialCellsメソッドのxlCellTypeFormulasとif...then...elseを利用して、 「セルに数式が含まれる場合は何もしない。 そうでない場合はクリアする」という内容を記述することですが、「何もしない」の部分をどう表現するか わかりません。よろしければ、ご教示いただければ ありがたいです。よろしくお願い致します

質問者が選んだベストアンサー

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.4

数式が含まれるセル以外をクリアするのでしたら、 定数の入ったセルに対して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

ayaka_ikeike
質問者

お礼

ご回答ありがとうございます! constantsを使えば式が含まれる部分も クリアされると思ってまして。 おかげさまで問題解決できました。 丁寧なご回答、ありがとうございました。

その他の回答 (4)

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

ちょっと見慣れないかもしれないメソッド 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

ayaka_ikeike
質問者

お礼

ご回答ありがとうございます! こういう方法もあるんですねぇ。 参考にさせていただきます。 ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >「セルに数式が含まれる場合は何もしない。そうでない場合はクリアする」 ロジックとしては、 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

ayaka_ikeike
質問者

お礼

ご回答ありがとうございます! constantsを使えば式が含まれる部分も クリアされると思ってました。 おかげさまで問題解決しました。 ありがとうございます。

  • dober-o
  • ベストアンサー率59% (260/439)
回答No.2

Then と Else の間に何も入れないでOKです それか IF ~ Then の条件を否定形に変えるか(Not使用) で Else 以下を省略でも可能でしょう

ayaka_ikeike
質問者

お礼

ご回答ありがとうございます! 参考にさせていただきます。

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

条件式自体にNotをつけてthenとelseを逆転させるか、thenの直後に何も書かないですぐにelseにすればよいです。

ayaka_ikeike
質問者

お礼

ご回答ありがとうございます! 参考にさせていただきます。

関連するQ&A