• ベストアンサー

VBA 結合セルの値を削除

マクロ超初心者です。 C7~K7が結合されたセルの値を削除したいです。(値はC7に入力されています) Range("C7").MergeArea.ClearContents で実行してみたところ 実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです。 と出てきます。 セルの書式設定をみてみると、保護/ロックにチェックが入っておりました。もしかしたらこれが悪さをしているのでしょうか。 分かりにくくて申し訳ありませんが、知恵を貸していただけたら助かります。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.2

No.1の追加です。 ご自身が思っているシートと実行しているシートが違うかもしれませんのでシート名を指定して実行してみてください。 Sheets("シート名").Range("C7").MergeArea.ClearContents

1930orz
質問者

お礼

助言いただき、本当にありがとうございます。 シート指定してみましたが同じエラーが出て苦戦しております。 他部署の方も閲覧記入するWorkbookなので、シートの保護にパスワードが掛かっていることがネックになっているようです。でもなぜか結合されていなくて、保護ロックされているセルの値は消せるようなので謎が深まっています; 引き続き、色々トライしてみます! 早々にご回答くださりありがとうございます。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

#4です。追加で。 https://yaromai.jp/vba-mergecell-area/ の例ですが With Range("A1").MergeArea MsgBox .Item(1).Row '一番上の行 MsgBox .Item(1).Column '一番左の列 MsgBox .Item(.count).Row '一番下の行 MsgBox .Item(.count).Column '一番右の列 End With のように Range("A1").MergeArea.Item(1)で、左上隅セル(値があるセル)を捕まえることができます。 例 B2とC2が結合されている場合 B2のセルの値を表示。 Sub test05() MsgBox Range("B2").Item(1) End Sub 抹消後確認。 Sub test06() Range("B2").Item(1).Value = "" MsgBox Range("B2").Item(1) End Sub

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

VBAの話ですが、小生の経験的知識から(大したことはないが)、どこかに結合されたセルというセルの番地なりが、まとまって一覧で収録されている仕組みは無いようです.だから質問の、Range.MergeArea。XXX のようには書けないはず。 個別に、指定セル範囲の各セルの属性として、Mergedセルかどうかを、聞いていかないとならないと思う。 Sub Sample() Range("B2:D3").MergeCells = True End Sub で、結合されているセル範囲が判っている場合は Sub Sample() Range("B2:D3").MergeCells = False End Sub で解除できるようだが <ーー https://www.sejuku.net/blog/32626 どのセルか判らない場合は、 Sub test01() For Each cl In Range("a1:G20") If cl.MergeCells Then MsgBox cl.Address End If Next End Sub <ーー結合されている全セルを1つづつ表示するので、先頭セルの識別が必要。 とか ーーー ただしセルの値については、 結合したセルでは、先頭のセルだけが値を持つ、のです。 >(値はC7に入力されています)と、質問に書くのは、本当は余分なのだ。 先頭セルの値を空白を代入するとかになろう。 === Googleで「vba merge」などで照会すれば、望みのコードの記事が見つかる。 ーー エクセルの市販(90年台半ば)以後、途中バージョンで付け足された機能で、厄介者であるように思う。 ピボットテーブルなどでは、なくすことを求められる。 だから解説記事をよく読んでください。

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.3

> 保護ロックされているセルの値は消せる これは不思議ですが (マクロからの変更は保護されない設定でシートの保護をしていれば別ですが、その場合別のセルも消せると思います) ロックされているかどうかを書式設定で見る場合、保護がかかった状態ではロックの状態は見れないと思いますから、保護を手動で解除できるのでしたらNo.1で回答したようにVBAで解除したらいかがでしょう。

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.1

シートもしくはブックの保護を解除してください シートの保護、ブックの保護(Protect) https://excel-ubara.com/excelvba1/EXCELVBA368.html

関連するQ&A

  • 結合セルを含むロックしていないセルの値の削除を複数シートで行いたい

    エクセルのマクロ(VBA)に関して、ご質問いたします。 私のレベルは入門編で、いろんなサイトや本を見て、そのまま利用しているくらいのものです。 次のコードは、他人様のサイトで見つけたものです。 Sub 結合セルを含むロックしていないセルの値の削除() Dim c As Range With ActiveSheet .Unprotect For Each c In .UsedRange If Not (c.Locked) Then c.MergeArea.ClearContents Next .Protect UserInterfaceOnly:=True End With End Sub この処理を複数シートに行いたいので、次のコードを(これも他人様のサイトからお借りしています)、上のコードの「Dim c As Range」の後に追加しましたが、アクティブシートは処理されましたが、全部のシートとはいきませんでした。 Dim Sh As Object For Each Sh In Sheets 単純に足しただけでは、だめなのでしょうか。 参考になるかどうかわかりませんが、シートの中には、値を削除しなくてもいいものも含まれています。 シートが全部で40枚弱あるので、全部のシートをチェックして、ロックされていないセル(結合セル含む)に値が入っていたら、値を削除する処理を、マクロ(VBA)で出来たらいいなっと思っております。 教えていただけますでしょうか。 どうぞよろしくお願いいたします。

  • エクセルVBA 結合されたセルの内容を消去させる方法

    こんにちは、いつもお世話になっています。 結合されたセルの入力内容を消去したいです。(書式などはそのまま) 現在 Range("A9").ClearContents となっているのですが、実行してみると 「実行エラー1004 結合されたセルの一部を変更することはできません」 と出てしまいます。 何かいい方法はあるでしょうか。

  • VBA 結合セルの

    EXCELにて結合セルを含む表の白紙化をしようとおもいます。しかしなぜか結合セルの部分はうまくいきません。 どうすればよいでしょうか。 range("A1:A6").clearcontents A1からA9に結合セル3つ含んでいます。

  • VBA 結合セルに名前を付ける

    作成中のマクロで、 「B9とB10を結合したセルに名前を付ける」 作業を入れたいのですが、 Range("B9:B10").Name = "あああ" とすると、マクロを実行した時にエラーになってしまいます。 Range("B9").Name = "あああ" としても、エラーになりました。 エラーが出ないvbaを教えてほしいです。

  • セル解除後、各行に値をコピーし結合するマクロ

    A1からC3のセルが結合しており、 そのセル結合を解除すると、A列のみ値がコピーされる。 コピーした後、各行ごとにセルを結合していく…… という処理をしたいと思い、 調べて下記のマクロまでなんとかこぎつけました。 Sub セル結合() Dim date1 As Variant Dim range1 As Range Application.DisplayAlerts = False For Each range1 In Selection.Rows If range1(1).MergeCells = False Then range1(1).Merge Else date1 = Selection.Rows(1).Value With range1 .UnMerge .WrapText = False .ShrinkToFit = False Selection.Value = date1 End With End If Next range1 End Sub ※実行範囲に関しては、  任意選択をした範囲にしたいため、  range(1)にて処理を行いました。 困っているのは、上記のマクロを実行すると、 最初の行のみ結合できないということ。 もうひとつが、 セル結合をしない時に値を左端にコピーすると、 文字が自動縮小されてしまいます。 縮小しないようにするには、 どのような処理を入れたら良いでしょうか? お力添え頂けますと幸いです。 よろしくおねがいします。

  • 結合セルの値取得について

    お世話になります、 (環境、VISTA&EXCEL2000) 結合セルに名前をつけて その値をマクロで取得したいのですが エラーになります。 結合セルには結合する前に名前をつけてから 結合してあります。 Dim ws As Worksheet ' On Error GoTo errTrap Set ws = Worksheets("xxxxx") '(1) ws.Range("DenDate").Value = Date '(2) MsgBox ws.Range("DenDate").Value (2)で「型が一致しません」になります。 宜しくお願いいたします。

  • excel vba 名前付きセルが存在しないとき

    あるワークシートのセルに、"_1", "_2","_3","_10"のように名前をつけています。 "_8"が見つからなかったら、ループで番号を上げていき、"_10"にたどりつくようにしたいんですが、"_8"というセルが見つからなかった時の判定方法がわかりません。 On error ではない処理を使いたいのですが、 If Range("_8") = Empty Then では実行時エラー1004 "アプリケーション定義またはオブジェクト定義のエラーです" と出ます。 Rangeオブジェクトがemptyになるわけではないんでしょうか? よい方法があれば、教えてください。

  • エクセル マクロを使用してのセル内の値消去

    win2000 officeXpです。 現在、マクロを使用して複数のシートの特定セル内の値を消去するマクロを Sub データ消去() Worksheets("A").Range("B5:AF9").ClearContents Worksheets("B").Range("B5:AF9").ClearContents End Sub のようにしていますが、これではセルに挿入していたコメントが消去されません。 コメントも消去する方法はあるのでしょうか。  また、この方法があればもっと便利なんですが、このマクロにあるセル(B5:AF9)はロックがはずされていますので、それぞれのシート内のロックがはずされているセルを探し出し、そのセルの値とコメントを削除できるようなマクロはあるのでしょうか? よろしくお願いします。

  • VBAでの結合セルのコピー&ペースト

    こんにちは。 EXCELのVBAでマクロを作成しています。 セルの値のコピー&ペーストを行おうとしているのですが、結合されているセルのペーストのときに、「同じ結合セルが必要です」とエラーになってしまいます。 例えば、A1とA2が結合されたセル+A3をコピー Worksheets(x).Activate Range("A1:A3").Selection Range("A1:A3").Copy 別のシートで、B1とB2が結合されたセル+B3にペースト Worksheets(y).Activate Range("B1:B3").Paste セルの結合を解除すればうまくいきます・・・ セルを結合したままペーストしたいのですが、どうやら間違っているようです(ノ_・。) どなたか教えてください。 よろしくお願いします。

  • VBAで結合したセルがクリアできない

    コードは以下のように記述してあります。 Worksheets("Sheet2").Activate 'Sheet2のセルをクリア Range("B5,B6,D5:D6,F5:F6,G5,G6,A10:M54").MergeArea.ClearContentsb 別のシートの複数のセルをクリアしたいのですが、結合されたセルがクリアできないと エラーがでます。 結合セルはD5:D6とF5:F6です。 何が間違っているのでしょうか? Excel2013です。

専門家に質問してみよう