見出し画像

【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などのシート全体を指定してもよい。

いいなと思ったら応援しよう!