VBA初心者です。
数式の入った表で、数式を消さずに値のみクリアしたいのですが、、、
Sub 指定のセル範囲の値だけをクリアする()
Range("A1:C5").SpecialCells(xlConstants, 23).ClearContents
Sheets("Sheet1").Range("A1:C5").SpecialCells(xlConstants, 23).ClearContents
End Sub
とやってもうまくいきません。
どこか間違っていますか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:2008/02/17 13:44
こんにちは。
>入力のしかたが間違っているのか、値は消えませんでした。
私は、以下のような書き方をします。
Sub Tests()
On Error Resume Next
With ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, 23)
.ClearContents
End With
End Sub
UsedRange は、シートのデータある範囲すべてをカバーします。
しかし、SpecialCells の不思議なところは、1つのセルを対象にして以下のようにしても同じになります。
On Error Resume Next
With ActiveSheet.Range("A1").SpecialCells(xlCellTypeConstants, 23)
.ClearContents
End With
そこで、
With ActiveSheet.Range("A:Z").SpecialCells(...
とすると、A列からZ列までの対象とすることも出来ます。
ちなみに、SpecialCells の中の 23 の意味はご存知ですか?
XlSpecialCellsValues クラスの
1 xlNumbers ←引数は、Integer型
2 xlTextValues
4 xlLogical
16 xlErrors
-----------------
合計:23
Dim arg As Integer
arg = xlErrors Or xlLogical Or xlNumbers Or xlTextValues
とすると、ビット演算で、arg =23 となります。
教えて頂いたとおりにやったらうまくいきました!!!
ありがとうございました。(^0^)
せっかく教えて頂いた、23の意味はちょっと理解できませんが、、
まだ、基本も分っていない状態ですのでもっと勉強します!
No.2
- 回答日時:2008/02/17 09:41
こんにちは。
>どこか間違っていますか?
間違ってはいないはずですが、おそらくは、Range("A1:C5") の範囲内に、該当する「値のみ」のデータがないからだと思います。
>Range("A1:C5").SpecialCells(xlConstants, 23).ClearContents
一般的には、こうした狭い範囲ではなく、Cells や Range("A1").CurrentRegion や UsedRange という広範囲にしたほうが良いのですが、それでも、見つからないことがありますから、その場合に備えて、#1 さんのおっしゃる On Error トラップを設けます。
ちゃんと動きました。
確かに、今は勉強のためにやっているので狭い範囲でやっていました。
実際の仕事では、もっと広い範囲を使ってデータの範囲は常に変わったりします。
教えていただいている、
Range("A1").CurrentRegion や UsedRange
で試しましたが、入力のしかたが間違っているのか、値は消えませんでした。もし、お願いできるようでしたら#1の方の、
On Error Resume Next
Range("A1:C5").SpecialCells(xlCellTypeConstants, "23").ClearContents
End Sub
でどのように変えたらいいか教えていただけないでしょうか...???
よろしくお願いいたします。m(_ _)m
No.1
- 回答日時:2008/02/17 08:54
テストしてみました。
Sub 指定のセル範囲の値だけをクリアする()
On Error Resume Next
Range("A1:C5").SpecialCells(xlCellTypeConstants, "23").ClearContents
End Sub
ちゃんと動きます。
うまくいきません。は具体的にどのようになるのですか?
エラーになる?クリアされない?
A1:C5に入っている数式は、A1:C5の範囲外を参照していませんか?
範囲外の参照されるセルもクリアしないとだめです。
範囲内のセルに値が入っていないと、(クリアした直後など)
「該当するセルが見つかりません。」
のエラーが出ますので、
On Error Resume Next を付けました。
expression.SpecialCells(Type, Value)
のTypeにxlConstants でも動きましたが、
ヘルプで説明されているように、xlCellTypeConstants にしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
マクロ 特定のセル値のみクリアする
Visual Basic(VBA)
-
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
-
EXCEL VBA で現在開いているブックのファイル名を取得する方法
その他(ビジネス・キャリア)
-
-
4
Excelでセル内の数式は残し値だけを削除したい
その他(Microsoft Office)
-
5
[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。
Access(アクセス)
-
6
別のシートから値を取得するとき
Visual Basic(VBA)
-
7
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
8
Excelで数式だけを消して、数値を残すには?
Excel(エクセル)
-
9
EXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法
Excel(エクセル)
-
10
ある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?
Excel(エクセル)
-
11
Sub ***( ) と Private Sub ***( ) の違い
Visual Basic(VBA)
-
12
エクセルのIF関数で、文字が入力されていたならば~
Excel(エクセル)
-
13
EXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい
Windows 10
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
16
複数条件が一致で別シートに転記【エクセルVBA】
Excel(エクセル)
-
17
エクセルで、条件に一致した行を別のセルに抜き出す方法
Excel(エクセル)
-
18
VBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー
Excel(エクセル)
-
19
VBAで条件が一致する行のデータを別シートに抽出
Excel(エクセル)
-
20
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
関連するQ&A
- 1 エクセルで数式を残して値のみクリアする方法は?
- 2 エクセルで数式を残して、数字のみを消す方法
- 3 エクセルで、コピーがうまくできません。また、数式が組み込まれた表の数式のみを消去することはできないでしょうか?
- 4 Excelで数式だけを消して、数値を残すには?
- 5 excel・セル内の数式のみ消したくない。
- 6 エクセル 数式だけ残し数値のみ削除の方法
- 7 エクセル2007で数式のみクリアしたいのですが、どう処理すれば良いのでしょうか?
- 8 VBAで特定の条件のセルのみクリアにする
- 9 エクセルvbaの質問です。 エクセルにデータを入力後、クリアボタンを押すと、入力されたデータがクリア
- 10 エクセルで数式を残して、数字だけ消したい
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ブックを開かずに、フォルダ内...
-
5
エクセルVBA 別シートの複数の...
-
6
EXCELコンマの簡単な取り方
-
7
エクセル VBA find は別シー...
-
8
Excel関数/数式内のセル番地を...
-
9
excelのIF関数 A,Bの大きいほ...
-
10
EXCELで行内最小値を検索し、そ...
-
11
あるセルの値を認識しないので...
-
12
エクセル:関数で他のセルの内...
-
13
IF関数「リストの中の値に一致...
-
14
エクセルの関数でセルの値が1...
-
15
VBA 数式を残して値をクリアに...
-
16
エクセル Vlookup関数の入った...
-
17
Excel 2007でセルの値で条件判...
-
18
Excelで、指定した範囲の先頭の...
-
19
エクセルで共通仮設費を算出し...
-
20
=IF(ISNA(VLOOKUP($A1,sheet2!$...
おすすめ情報
公式facebook
公式twitter