
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは。
お邪魔します。> Range("B5,B6,D5:D6,F5:F6,G5,G6,A10:M54").MergeArea.ClearContents b
#文末の" b"についてはスルーしますが、
この書式で.MergeAreaプロパティを使うのは間違いです。
やや蛇足になりますが、そもそも.MergeAreaプロパティは、
今回の例でいえば、
Range("D5").MergeArea.Select
単一セル(D5)を内包する結合セル範囲(D5:D6)を取得するような使い方が、
本来の目的であり、正しい使い方です。
本題です。
通常は、
Range("B5,B6,D5:D6,F5:F6,G5,G6,A10:M54").ClearContents
という記述で、問題なく値の消去が実行されます。
必要なだけ整理した書き方として、
Range("B5:B6,D5:D6,F5:G6,A10:M54").ClearContents
などでも問題ありません。
セル範囲の指定さえ間違っていなければ、
滅多にエラー(結合セルに纏わるエラー)を起こすような記述ではありません。
> 別のシートの複数のセルをクリアしたいのですが、結合されたセルがクリアできないと
> エラーがでます。
エラーが出たら、エラーメッセージの内容を正確に把握して伝えるようにすると、
回答者にとっても質問者にとっても、遠回りせずに済み、解決し易くなります。
ーーーーーーーーーーーーーーーーーーーーーーーーー
実行時エラー "1004":
結合されたセルの一部を変更することはできません。
ーーーーーーーーーーーーーーーーーーーーーーーーー
この↑ようなエラーメッセージだったのではないでしょうか?
もしそうだと仮定した場合の話、ですが、
> 結合セルはD5:D6とF5:F6です。
質問者さんが把握できていない結合セルが、
B5:B6,D5:D6,F5:G6,A10:M54 から食み出る(内外に跨ぐ)形で存在することが
可能性のひとつとして考えられます。
#こういう書き間違いを私も偶にやりますものですから、、、。
とりあえず、「食み出る結合セルの有無を確認するマクロ」を以下に挙げますので、
実際に動かして、表示されるメッセージを確認してみてください。
' ' ///
Sub Check8689170()
Const sRef = "B5:B6,D5:D6,F5:G6,A10:M54" ' セル範囲参照、◆要確認(要指定)◆
Dim Target As Range
Dim c As Range
Dim s As String
Set Target = Worksheets("Sheet2").Range(sRef) ' シート名、◆要確認(要指定)◆
For Each c In Target
If c.MergeCells Then
With c.MergeArea
If .Count <> Application.Intersect(Target, .Cells).Count Then
s = s & "," & .Address(0, 0)
End If
End With
End If
Next
If s = "" Then
MsgBox "セル範囲 " & vbLf & _
vbTab & sRef & vbLf & _
"は正しく指定できています。" & vbLf & _
"(食み出る位置に結合セルはありません)。"
Else
MsgBox "セル範囲 " & vbLf & _
vbTab & sRef & vbLf & _
"から、食み出る位置に結合セルがあります。" & vbLf & _
"食み出した結合セル" & vbLf & _
vbTab & Mid(s, 2) & vbLf & _
"を、確認の上、セル範囲の指定をやり直して下さい。"
End If
Set Target = Nothing
End Sub
' ' ///
以上の実行結果として、"正しく指定できています。"ということでしたら、
今回、私の想定は外れていたことになります。
その場合は、エラーの原因を特定する意味で、当初問題にされているエラーの
正確なエラーメッセージを補足欄にでも書き込んでみてください。
その際、注意深くシートを眺めてみて、何か変わったことをしてないか、
気が付いたことがあれば、併せて書いてみてください。
もしも、上記マクロを実行する気になれない、ということでしたらば、
簡単に、
Range("B5,B6,D5:D6,F5:F6,G5,G6,A10:M54").Select
を実行してみて、実際に指定したい範囲と相違ないか、
シート上で目視することで、正しいかどうかの確認だけは出来ます。
因みに応用的な蛇足でもありますが、少し視点を変えて
Range("B5:B6,D5:D6,F5:G6,A10:M54").Value = Empty
のような記述であれば、食み出る位置に結合セルがあってもなくても、
(結合セルが原因の)エラーは起きません。
(右や下に食み出る位置にある結合セルについては、値を消去し、
上や左に食み出る位置にある結合セルについては、何もしない、
というような目的に使える記述です。)
もし、これでもエラーが出るとなると、部分的なセルのロックとシート保護、
とか、他の原因を考えることになるかと思いますので、
問題を切り分ける意味では、この記述も試してみてください。
(いずれも、試す時は、加筆・編集せず、そのままの記述でお願いします。)
以上です。
No.2
- 回答日時:
Range("B5,B6,D5:D6,F5:F6,G5,G6,A10:M54").ClearContents
でもこちらの環境では動作しますが、
MergeAreaを使うなら結合されているエリアとされていないエリアを分けた方がいいかもしれません。
’結合されていないエリア
Range("B5,B6,G5,G6,A10:M54").ClearContents
’結合されているエリア
Range("D5").MergeArea.ClearContents ’D5:D6が結合範囲なら、D6を指定してもよい
Range("F5").MergeArea.ClearContents
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Excel(エクセル) エクセルで月末、月初の判定をしたい。 4 2022/05/18 23:22
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(Microsoft Office) ある表(10桝程度)の中に数字が入っています。ダブっている数字を除く数字の合計数の計算方法 5 2023/02/15 11:33
- Visual Basic(VBA) 指定の条件に応じたセルの場所に〇印(図形)を描く 2 2022/11/08 15:26
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
このQ&Aを見た人はこんなQ&Aも見ています
-
マクロのデータ削除
Excel(エクセル)
-
エクセルVBA 結合されたセルの内容を消去させる方法
Excel(エクセル)
-
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
-
4
VBA 数式を残して値をクリアについて
Excel(エクセル)
-
5
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
6
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
7
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
10
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
11
リストと一致する値のセルを塗りつぶしたい。
その他(Microsoft Office)
-
12
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
13
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
14
Excelの入力規則で2列表示したい
Excel(エクセル)
-
15
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
16
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
17
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
18
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
19
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
20
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで、結合されたセルに連続...
-
excelでSUBTOTAL関数を設定した...
-
エクセル ボタンを押すとセルの...
-
セルを結合した場合の関数(COU...
-
エクセルでチェックボックスを...
-
Excel 離れたセルへの連続デー...
-
エクセルで片方のセルに入力し...
-
Excelでnullになるような式のセ...
-
エクセルでたくさんのセルを小...
-
VBAで結合したセルがクリアでき...
-
【EXCEL】条件に合致するセルの...
-
Excel セルを結合したものを抽...
-
EXCEL VBAでたくさんのURLの一...
-
セル内の一部に別セルを差し込む
-
エクセルでセルをクリックして“...
-
Excel2007 セルの削除について
-
Excelのカウントアップボタンに...
-
EXCEL セル結合したセルを参照...
-
エクセル 結合セル内に空白なら...
-
エクセルで作業した日の日付を残す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelでSUBTOTAL関数を設定した...
-
EXCELで、結合されたセルに連続...
-
エクセル ボタンを押すとセルの...
-
エクセルでチェックボックスを...
-
セルを結合した場合の関数(COU...
-
エクセルで片方のセルに入力し...
-
Excel 離れたセルへの連続デー...
-
VBAで結合したセルがクリアでき...
-
Excelでnullになるような式のセ...
-
セルの値を取得してSQL文に組み...
-
Excel セルを結合したものを抽...
-
エクセルでたくさんのセルを小...
-
エクセルでセルをクリックして“...
-
エクセル 結合セル内に空白なら...
-
【EXCEL】条件に合致するセルの...
-
Excelのカウントアップボタンに...
-
VBAで困っています。
-
エクセルで作業した日の日付を残す
-
EXCEL VLOOKUP的コメント自動表示
-
EXCEL セル結合したセルを参照...
おすすめ情報