
【Excel VBA】セルの結合を解除し、同一値を解除前のセル範囲に書き込む方法
目的
セルの結合を解除すると、結合されていたセルの左上セルひとつに値が残る形となってしまう。
セル結合を解除した途端、表題が何に該当していたかがわからなくなることがあるため、セル結合解除前のセル範囲に同一値を書き込むプロシージャを作ることにした。
完成コード
メインプロシージャ
Sub テストコード()
Call セル結合解除(Selection)
End Sub
セル結合解除プロシージャ
'**
'* セル結合を解除し、結合解除前のセル範囲に同一値を書き込む
'* 引数1:inRng {Range型} 結合を解除したいセル範囲を指定
'**
Private Sub セル結合解除(ByVal inRng As Range)
Dim Cell As Range
For Each Cell In inRng.Cells
If Cell.MergeCells Then
Set Cell = Cell.MergeArea
Cell.UnMerge
Cell.Value = Cell.Resize(1, 1).Value
End If
Next Cell
End Sub
使い方
上のコードをひとつのモジュールにコピペする。
セル結合を解除したいセル範囲をマウス等で選択し、メインプロシージャのテストコードを実行する。
もちろん、引数1に入れるRange型はSelectionではなく、直接セル範囲を設定したものでも、UsedRangeなどのシート全体を指定してもよい。