重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルで、ClearContents を使い文字を削除すると
セルのIF文も消えてしまうのですが、文字だけ消す
方法はあるのでしょうか?
よろしくお願いします。

A 回答 (5件)

#3 です。

あまり、ご質問者さんの反応を見ずに、言葉を重ねたくはないのですが、文章的に足りないような気がしましたので、もう一度、書かせていただくと、

Range("D11").SpecialCells(xlCellTypeConstants).ClearContents
は、Range("D11") 自体では、SpecialCellsの領域を支配する力を持ちません。
排他的領域(選択されていない場所)と分けられてはいないことです。

したがって、正しく書くと、Range("A1", ActiveSheet.UsedRange).SpecialCells と同義になります。
これは、Excelのワークシートの機能の保護機能です。

例えば、仮に、

Range("A1:D30").SpecialCells(xlCellTypeConstants).ClearContents

としても、UsedRange の範囲が、"A1:D10" までだとしたら、.SpecialCells の制御範囲は、"A1:D10" までです。当たり前のような気がしますが、xlCellTypeConstants では、関係ありませんが、xlCellTypeBlanks(ブランクセル)を探す場合などには、これが関わってきます。これは、結構、間違えやすいです。

したがって、実質的な範囲(UsedRange)の範囲はともかくとして、セル一つではダメだということですね。
    • good
    • 0

>でもなぜか、シート全部の文字が..消えました。


#01さんの回答でなにが問題か、具体的に補足されていませんね。
特定範囲に限定して「文字」を削除したいのですか?

もし範囲を限定して「数式以外の文字」を消したいというのなら
Sub Macro1()
 With ActiveSheet
  Application.Intersect(.Range("A1:G50"), _
   .Cells.SpecialCells(xlCellTypeConstants)).ClearContents
 End With
End Sub
のようなマクロが考えられます(A1:G50の範囲の定数を削除)
    • good
    • 0

こんばんは。



ちょっと補足しますが、
SpecialCells
というのは、Excel(ワークシート)側のメソッドで、その範囲の取り方には癖がありますので、気をつけたほうが良いです。

SpecialCells というのは、UsedRange と複合的に合わさった機能を持っています。
だから、セル全体(Cells)を行っても、UsedRange の先には、範囲は、及びません。

逆に、
× Range("D11").SpecialCells(xlCellTypeConstants).ClearContents

他のセルへの排他的選択がされていませんので、UsedRange になるはずです。二つ以上のセルの範囲が必要です。

時々、以下のような方法で不満を持つ方がいらっしゃますが、
この際は、一つずつ、VBA側の方法で、

 For Each c In ActiveSheet.UsedRange または、特定の範囲

で判定したほうが確実な場合もあります。
Excel 側のメソッド(オブジェクト・ブラウザ上)は、検査してから使ったほうがよいです。おかしな動作が時々あります。だいぶ、改良されたようです。
    • good
    • 0

> 消えるには期待どおりの結果なんですが、シートの文字全部消えました(笑)



失礼しました。ある範囲の数式以外の文字を全部削除するのと思っていました。

> Range("D11").SpecialCells(xlCellTypeConstants).ClearContents

でもいいのですが、1セルだけなら、

If Not Range("D11").HasFormula Then Range("D11").ClearContents

でいいかと思います。(でもかえって長くなってますが…)
    • good
    • 0
この回答へのお礼

ありがとうございます。
Range("D11").SpecialCells(xlCellTypeConstants).ClearContents
でいいですよね。
でもなぜか、シート全部の文字が..消えました。
困ったっ。

お礼日時:2007/03/16 22:07

範囲をRとすると、


R.SpecialCells(xlCellTypeConstants).ClearContents
で数式でなくて定数が入っているセルだけをクリアできます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
消えるには期待どおりの結果なんですが、シートの文字全部消えました(笑)
Range("D11").SpecialCells(xlCellTypeConstants).ClearContents
セルD11だけ消すならこれで良いのですよね?

お礼日時:2007/03/16 21:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!