見出し画像

セルの結合を行う

 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/

この記事が気に入ったらサポートをしてみませんか?