セルの結合を行う
Excel VBA でセルの結合を行う
Excel VBA でセルの結合を行うには、Range オブジェクトの MergeCells プロパティを使用します。
このプロパティは、True に設定するとセルを結合し、False に設定すると結合を解除します。
基本的な使い方
VB.Net
Sub セル結合()
' A1:C3 の範囲を結合する
Range("A1:C3").MergeCells = True
End Sub
コードは注意してご使用ください。
複数の範囲を結合する場合
複数の範囲を結合する場合は、それぞれの範囲に対して MergeCells プロパティを設定します。
VB.Net
Sub 複数の範囲を結合()
' A1:B2 と D1:E2 の範囲を結合する
Range("A1:B2").MergeCells = True
Range("D1:E2").MergeCells = True
End Sub
コードは注意してご使用ください。
動的な範囲の指定
行数や列数が変わる場合、動的に範囲を指定することができます。
VB.Net
Sub 動的な範囲の結合()
Dim lastRow As Long
Dim lastCol As Long
' 最終行と最終列を求める
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
' A1 から最終行・最終列までの範囲を結合する
Range("A1:" & Cells(lastRow, lastCol).Address).MergeCells = True
End Sub
コードは注意してご使用ください。
セルの結合を解除する場合
VB.Net
Sub セルの結合を解除()
' A1:C3 の結合を解除する
Range("A1:C3").MergeCells = False
End Sub
コードは注意してご使用ください。
注意点
データの扱い: セル結合を行うと、結合されたセル内のデータは左上のセルにのみ保持されます。
他のセルにデータを入力しても、表示されるのは左上のセルのみとなります。
書式: セル結合されたセルに書式を設定する場合、結合された範囲全体に適用されます。
関数: 結合されたセルに対して関数を適用する場合、結合された範囲全体を範囲として指定する必要があります。
その他
特定の条件で結合: 条件分岐を用いて、特定の条件を満たすセルのみを結合することができます。
ユーザーフォームから結合: ユーザーフォームを作成し、ユーザーが結合したい範囲を指定できるようにすることも可能です。
例:特定の文字列を含む行を結合
VB.Net
Sub 特定の文字列を含む行を結合()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow
If Cells(i, 1).Value = "結合" Then
Range(Cells(i, 1), Cells(i, 3)).MergeCells = True
End If
Next i
End Sub
コードは注意してご使用ください。
Excel VBA の学習には、以下のサイトも参考になります。
侍エンジニアブログ: https://sejuku.net/blog/32626
みんなの実用学: https://jitsuyogaku.com/2024/03/25/merge-cells/
この記事が気に入ったらサポートをしてみませんか?