
Range(”A1:A6”)にデータが入っていますが、そのうちA3、A4、A5セルは
結合されています。Range(”A1:A6”)のデータをクリアするために以下
コーディングをしましたが、結合セルの先頭でエラー(実行時エラー 1004)に
なってしまいます。
結合セルのデータクリアはどのようにすればいいのでしょうか。
お分かりの方よろしくご教示ください。
Sub Sample()
Dim i As Long
For i = 1 To 6
Cells(i, 1).ClearContents
Next i
End Sub
No.5ベストアンサー
- 回答日時:
横から失礼。
ちょっと不思議な展開のような気がしてます。
Range("A1").Value = ""
セルの表示形式が文字列の場合は本当の空白セルになりませんよね?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MsgBox IsEmpty(Range("A1"))
それに
Range("A65536").End(xlUp).Select
そもそも
Range("A1:A6").ClearContents
?
私が何か勘違いしてるのかしらん?
#ひょっとしてA3:A5が結合してるのではなくてそれぞれが横方向に結合してたりするのかなぁ。
#その場合でもRange("A1:A6").Value = Emptyで良いはずだけど。
解答ありがとうございました。
話が難しくなってきましたが、結局、一部(A3:A5)が結合している範囲(A1:A6)のデータをクリアするには、(1)または(2)が良いということでしょうか。
(1)Range("A1:A6").Value = Empty
(2)Range("A1:A6").MergeArea.ClearContents
No.8
- 回答日時:
myRangeです。
Empty、失念しておりました。。(^^;;;
何れにしろ当方のコメントで質問者を混乱させてしまったようで
申し訳ありませぬ。
で、ちょと整理してみますと、セルA3:A5が結合セルとして。
●ClearContentsメソッドは結合セルの一部を指定できない●
Range("A3:A5").ClearContents
のように結合セル全セルを指定するのはいいが、
質問者のコードのように
range("A3").ClearContents
と、結合セルの一部指定はできない。
Range("A1:A6").ClearContents
これは、結合セル(A3:A5)が全て含まれているのでOK。
このようにClearContentsメソッドで結合セルをクリアーする場合は
そこら辺りの煩わしさがあるので、あっさりと
Range("A1:A6").Value = Empty
Emptyを代入した方がいいのかも知れません。
------------------------------------------------------
今回は改めて基本的な事柄を再確認することができ
end-uさん、MackyNo1さん、質問をしてくださったyamato99さん
お三方に感謝せねばなりません。
ありがとうございました。
以上です。
No.7
- 回答日時:
>Range("A1").Value = ""
セルの表示形式が文字列の場合は本当の空白セルになりませんよね?
end-uさん、ご指摘ありがとうございます。
ご指摘のように、文字列のセルには、空白文字列が代入されてしまいますね。
私は、VBAについては入門書を読んだだけで、ほとんど参考書を読まず、必要に応じて試行錯誤して実戦的に覚えた自己流のマクロなので、実際に不都合が発生するまで問題に気がつかないこともたびたびありました(それで少しずつノウハウがわかるようになってきましたが)。
今回のようなコードを使用した場合はRange("A65536").End(xlUp).Selectなどで最下行セルを特定するときなどに、確かに問題が発生する可能性がありますね。
これまでは、どうにか解決するという場当たり的な対応していましたが、これを機会に少し上級の参考書でVBAを基本から勉強してみようかと思っています。
No.4
- 回答日時:
MackyNo1さん、
的確なご指摘、感謝しまします。
仰るとおりです。
エクセル側とVBAをごちゃまぜにしていたようです。(^^;;;
質問者さん、回答2の
「数値が入るべきセルに””を入れると拙い場合云々」
は無視願います。
MackyNo1さんの回答は勉強になるものが多いので
目につくと必ず見るようにしています。
これからも目から鱗の回答期待しています。
今回はありがとうございました。
以上です。
No.3
- 回答日時:
MyRangeさん
>●長さ0の文字列””を代入する場合
>数値が入るべきセルに””を入れると拙い場合がありますよね。
VBAの「""」は関数で使用する場合の「""」と違って、本当の空白セルになると思うのですが(「=TYPE(A1)」で1が返ります)、どのような場合に不都合がでるのでしょうか?
後学のために教えていただけると幸いです。
No.2
- 回答日時:
ClearContentsと""(長さ0の文字列)は、
クリアーといっても意味が違いますので。。
●ClearContentsを使う方法
この方がセルの内容が初期値になるのでお勧めです。
'-----------------------------------------------
Sub test11()
Dim i As Long
For i = 1 To 6
Cells(i, "A").MergeArea.ClearContents
Next i
End Sub
'----------------------------------------------
●長さ0の文字列””を代入する場合
数値が入るべきセルに””を入れると拙い場合がありますよね。
'--------------------------------------
Sub test22()
Range("A1:A6").Value = ""
End Sub
'--------------------------------------
以上です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelでSUBTOTAL関数を設定した...
-
EXCELで、結合されたセルに連続...
-
エクセルでチェックボックスを...
-
エクセル ボタンを押すとセルの...
-
セルを結合した場合の関数(COU...
-
Excel セルを結合したものを抽...
-
Excel 離れたセルへの連続デー...
-
エクセルでたくさんのセルを小...
-
エクセルで片方のセルに入力し...
-
セルの値を取得してSQL文に組み...
-
Excelで特定のセルのみ移動し入...
-
【マクロ】ファイル名の一括変...
-
VBAで結合したセルがクリアでき...
-
Excelのカウントアップボタンに...
-
エクセル 結合セル内に空白なら...
-
Excelでnullになるような式のセ...
-
【EXCEL】条件に合致するセルの...
-
EXCEL セル結合したセルを参照...
-
EXCELマクロについて教えてくだ...
-
エクセルのセルの結合でのトラブル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelでSUBTOTAL関数を設定した...
-
EXCELで、結合されたセルに連続...
-
エクセル ボタンを押すとセルの...
-
セルを結合した場合の関数(COU...
-
エクセルでチェックボックスを...
-
エクセルで片方のセルに入力し...
-
Excel 離れたセルへの連続デー...
-
エクセルでたくさんのセルを小...
-
エクセルでセルをクリックして“...
-
エクセル 結合セル内に空白なら...
-
Excelでnullになるような式のセ...
-
VBAで結合したセルがクリアでき...
-
セルの値を取得してSQL文に組み...
-
エクセルで作業した日の日付を残す
-
Excel セルを結合したものを抽...
-
【EXCEL】条件に合致するセルの...
-
Excelのカウントアップボタンに...
-
VBAで困っています。
-
曜日を判定して、曜日ごとに特...
-
Excel2007 セルの削除について
おすすめ情報