EXCEL VBA セルの結合・結合セルの解除・結合セルの参照 (MergeCells・MergeArea)
EXCEL VBA セルの結合・結合セルの解除・結合セルの参照 (MergeCells・MergeArea)
EXCELで表などを作成する際に、タイトル見出しなど、セル結合させて文字列や値などを記入する時がありますが、このように複数セルを結合したり、解除する場合に、「MergeCells」を利用します。また、「MergeCells」は、指定したセルの状況を調べる事もできます。「MergeArea」は、結合したセルに対しての参照など行う事ができます。それでは、セルの結合・セルの解除・結合したセルの参照方法の利用方法を説明いたします。
A = Range(”セル位置”).MergeCells (例 :Aの値に指定セルの結果が代入されます。Trueは、結合・Falseは、解除 )
Range(”セル位置”)MergeCells = True / False (設定:Trueは、結合・Falseは、解除)※結合後は、左上端の値が保持される。
※複数セルを結合する場合に、各セルに値が登録されている場合は、下記のメッセージが表示されます。
メッセージを非表示させる場合は、【 Application.DisplayAlerts = False 】を結合前に入力します。
指定したセルの結合しているか調べる方法 (MergeCells)
下記のプログラムは、セルのA1からA6のセルの状況を調べるプログラムです。結果をC列のセルに表示されます。(結合セルは、True・結合していないセル(解除)は、False
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub MergeCells01() Dim ChackCell As Boolean 'false と Trueを取り扱うBoolean型を設定 Dim I As Integer For I = 1 To 6 '1~6行を繰り返す(A1~A6) ChackCell = Range("A" & I).MergeCells '指定したセルの状況(結合しているか?) Range("C" & I) = "A" & I & "のセルは、" & ChackCell '指定したセルの結果を列に表示 (Trueは、結合・Falseは、解除) Next I End Sub |
(画像クリックして拡大)
指定したセルの結合とセルの結合解除の方法 (MergeCells)
(画像クリックで拡大)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub MergeCell02() Application.DisplayAlerts = False 'セルを結合する時に警告を無視します。 Range("B2:D2").MergeCells = True 'セル結合 Range("B2") = "第1四半期" Range("B2").HorizontalAlignment = xlCenter '中央揃え MsgBox "セルの結合" Range("B2:D2").MergeCells = False 'セルの解除 Range("B2") = "4月" Range("C2") = "5月" Range("D2") = "6月" MsgBox "セル結合の解除" Application.DisplayAlerts = True '警告を解除します。 End Sub |
結合しているセルを参照・入力・クリアーする方法(MergeCells)
A = Range(”セル位置”).MergeArea.Address ※結合されたセルの範囲を返します。
Range(”セル位置”).MergeArea = ”文字列・数値など” ※結合されたセルに文字列・数字などを入力します。
Range(”セル位置”).MergeArea.ClearContents ※結合されたセルの内容をクリアーします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Sub MergeArea01() Dim WestFloor As String Dim I As Integer For I = 3 To 16 Step 2 '3行名から16行目まで2行毎に繰り返します。 WestFloor = Range("E" & I).MergeArea.Address 'E列(西側)に係わるセル結合したアドレスを返します。 Range("E" & I).MergeArea.Interior.ColorIndex = 3 'E列(西側)に係わるセル結合したセルの背景色を赤にします。 Cells(I, "I") = WestFloor 'I列にセル結合したアドレス範囲(E列:西側)を記入します。 Next I End Sub |
(画像クリックして拡大)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub MergeArea02() Range("G3").MergeArea.ClearContents 'D3~G4「屋上」セルをクリアします。 Range("E9").MergeArea.ClearContents 'D9~G10「3F」セルをクリアします。 MsgBox "屋上と3Fをクリアしました。" Range("F4").MergeArea = "屋上動物園" Range("D10").MergeArea = "本屋" MsgBox "屋上⇒屋上動物園・3F ⇒本屋を記入しました。" End Sub |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。