• 締切済み

文字だけ削除する関数ありますか?

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

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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)の範囲はともかくとして、セル一つではダメだということですね。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

>でもなぜか、シート全部の文字が..消えました。 #01さんの回答でなにが問題か、具体的に補足されていませんね。 特定範囲に限定して「文字」を削除したいのですか? もし範囲を限定して「数式以外の文字」を消したいというのなら Sub Macro1()  With ActiveSheet   Application.Intersect(.Range("A1:G50"), _    .Cells.SpecialCells(xlCellTypeConstants)).ClearContents  End With End Sub のようなマクロが考えられます(A1:G50の範囲の定数を削除)

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

こんばんは。 ちょっと補足しますが、 SpecialCells というのは、Excel(ワークシート)側のメソッドで、その範囲の取り方には癖がありますので、気をつけたほうが良いです。 SpecialCells というのは、UsedRange と複合的に合わさった機能を持っています。 だから、セル全体(Cells)を行っても、UsedRange の先には、範囲は、及びません。 逆に、 × Range("D11").SpecialCells(xlCellTypeConstants).ClearContents 他のセルへの排他的選択がされていませんので、UsedRange になるはずです。二つ以上のセルの範囲が必要です。 時々、以下のような方法で不満を持つ方がいらっしゃますが、 この際は、一つずつ、VBA側の方法で、  For Each c In ActiveSheet.UsedRange または、特定の範囲 で判定したほうが確実な場合もあります。 Excel 側のメソッド(オブジェクト・ブラウザ上)は、検査してから使ったほうがよいです。おかしな動作が時々あります。だいぶ、改良されたようです。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

> 消えるには期待どおりの結果なんですが、シートの文字全部消えました(笑) 失礼しました。ある範囲の数式以外の文字を全部削除するのと思っていました。 > Range("D11").SpecialCells(xlCellTypeConstants).ClearContents でもいいのですが、1セルだけなら、 If Not Range("D11").HasFormula Then Range("D11").ClearContents でいいかと思います。(でもかえって長くなってますが…)

Kyokunan
質問者

お礼

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

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

範囲をRとすると、 R.SpecialCells(xlCellTypeConstants).ClearContents で数式でなくて定数が入っているセルだけをクリアできます。

Kyokunan
質問者

お礼

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

関連するQ&A