この記事では、VBAマクロで結合セルをクリア・解除(同じ値をそれぞれに入力:シート全体:すべてのセルなど)する方法について解説していきます。
ポイントとしては、
.MergeCells
.MergeArea
を使用することです。
なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
VBAマクロで結合セルをクリア・解除(D列に適用:結合解除後は上の値のみに入力)
それではまず、VBAマクロを使用して結合セルをクリア・解除し、D列に適用する方法について解説していきます。結合解除後は上の値のみに入力します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub aaaaketsugoukaijyoDranaaaaaa()
'結合解除マクロ、D列に適用、上の値を入力
Dim aaaashiitomeiaaaa As String
aaaashiitomeiaaaa = ActiveSheet.Name
Dim aaaaaisaikiaaaa As Long
Dim aaaaagenzaihyouaaaa As Range
Dim aaaaakaijyogoaaaaa As Range
'シートの最終行まで繰り返し
With Worksheets(aaaashiitomeiaaaa)
aaaaaisaikiaaaa = .Cells(.Rows.Count, "D").End(xlUp).Row
'シートのD列をセット
Set aaaaagenzaihyouaaaa = .Range("D1:D" & aaaaaisaikiaaaa)
'D列の結合セルを解除
For Each aaaaakaijyogoaaaaa In aaaaagenzaihyouaaaa
If aaaaakaijyogoaaaaa.MergeCells Then
With aaaaakaijyogoaaaaa
.MergeArea.Cells(1, 1).Copy
.UnMerge
.PasteSpecial Paste:=xlPasteValues
End With
End If
Next aaaaakaijyogoaaaaa
End With
End Sub
コードのAlt+F8を押し、マクロ選択画面でaaaaketsugoukaijyoDranaaaaaaa関数を実行します。
このコードでは、以下の処理を行っています。
1. aaaashiitomeiaaaa変数にアクティブシート名を格納
2. aaaaaisaikiaaaa変数にシートのD列の最終行番号を格納
3. aaaaagenzaihyouaaaa変数にD1セルからD列の最終行までの範囲をセット
4. D列の各セル(aaaaakaijyogoaaaaa)に対して以下を繰り返し
– 結合セルなら、結合セル範囲の左上セルの値をコピー
– 結合を解除
– コピーした値を貼り付け(これにより結合解除後の先頭セルにのみ値が入力される)
なお、ここで、`.MergeArea.Cells(1, 1).Copy`が結合セル範囲の左上セルの値をコピーし、
`.UnMerge`が結合を解除、`.PasteSpecial Paste:=xlPasteValues`がコピーした値の貼り付けを行っています。
これにより、結合解除後の各セル範囲の先頭セルにのみ元の値が入力され、他のセルは空白のままになります。
VBAマクロで結合セルをクリア・解除(シート全体に適用:結合解除後は同じを値をそれぞれのセルに入力)
続いては、VBAマクロを使用して結合セルをクリア・解除し、シート全体に適用する方法について解説していきます。
結合解除後は同じ値をそれぞれのセルに入力する仕様としております。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub aaaaketsugoukaijyozenbuaaaa()
'結合解除マクロ、シート全体に適用、同じ値を入力
Dim aaaashiitomeiaaaa As String
aaaashiitomeiaaaa = ActiveSheet.Name
Dim aaaaagenzaihyouaaaa As Range
Dim aaaaakaijyogoaaaaa As Range
With Worksheets(aaaashiitomeiaaaa)
'シート全体をセット
Set aaaaagenzaihyouaaaa = .Cells
'シート全体の結合セルを解除
For Each aaaaakaijyogoaaaaa In aaaaagenzaihyouaaaa
If aaaaakaijyogoaaaaa.MergeCells Then
With aaaaakaijyogoaaaaa.MergeArea
.Cells(1, 1).Copy
.Cells.PasteSpecial Paste:=xlPasteValues
aaaaakaijyogoaaaaa.UnMerge
End With
End If
Next aaaaakaijyogoaaaaa
End With
End Sub
コードのAlt+F8を押し、マクロ選択画面でaaaaketsugoukaijyozenbuaaaa関数を実行します。
このコードでは、以下の処理を行っています。
1. aaaashiitomeiaaaa変数にアクティブシート名を格納
2. aaaaagenzaihyouaaaa変数にシート全体の範囲をセット
3. シート全体の各セル(aaaaakaijyogoaaaaa)に対して以下を繰り返し
– 結合セルなら、結合セル範囲の左上セルの値をコピー
– 結合セル範囲全体に値を貼り付け
– 結合を解除
まとめ VBAマクロで結合セルを解除(同じ値をそれぞれに入力:シート全体など)する方法
ここでは、VBAマクロで結合セルをクリア・解除(同じ値をそれぞれに入力:シート全体など)する方法について解説しました。
マクロの扱いになれ、さらに快適な生活を送っていきましょう!