- 締切済み
文字だけ削除する関数ありますか?
エクセルで、ClearContents を使い文字を削除すると セルのIF文も消えてしまうのですが、文字だけ消す 方法はあるのでしょうか? よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
#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)
>でもなぜか、シート全部の文字が..消えました。 #01さんの回答でなにが問題か、具体的に補足されていませんね。 特定範囲に限定して「文字」を削除したいのですか? もし範囲を限定して「数式以外の文字」を消したいというのなら Sub Macro1() With ActiveSheet Application.Intersect(.Range("A1:G50"), _ .Cells.SpecialCells(xlCellTypeConstants)).ClearContents End With End Sub のようなマクロが考えられます(A1:G50の範囲の定数を削除)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 ちょっと補足しますが、 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)
> 消えるには期待どおりの結果なんですが、シートの文字全部消えました(笑) 失礼しました。ある範囲の数式以外の文字を全部削除するのと思っていました。 > Range("D11").SpecialCells(xlCellTypeConstants).ClearContents でもいいのですが、1セルだけなら、 If Not Range("D11").HasFormula Then Range("D11").ClearContents でいいかと思います。(でもかえって長くなってますが…)
- ham_kamo
- ベストアンサー率55% (659/1197)
範囲をRとすると、 R.SpecialCells(xlCellTypeConstants).ClearContents で数式でなくて定数が入っているセルだけをクリアできます。
お礼
ありがとうございます。 消えるには期待どおりの結果なんですが、シートの文字全部消えました(笑) Range("D11").SpecialCells(xlCellTypeConstants).ClearContents セルD11だけ消すならこれで良いのですよね?
お礼
ありがとうございます。 Range("D11").SpecialCells(xlCellTypeConstants).ClearContents でいいですよね。 でもなぜか、シート全部の文字が..消えました。 困ったっ。