Categories: VBA基礎

EXCEL VBA セルの結合・結合セルの解除・結合セルの参照 (MergeCells・MergeArea)

EXCEL VBA セルの結合・結合セルの解除・結合セルの参照 (MergeCells・MergeArea)

 

●はじめに

EXCELで表などを作成する際に、タイトル見出しなど、セル結合させて文字列や値などを記入する時がありますが、このように複数セルを結合したり、解除する場合に、「MergeCells」を利用します。また、「MergeCells」は、指定したセルの状況を調べる事もできます。「MergeArea」は、結合したセルに対しての参照など行う事ができます。それでは、セルの結合・セルの解除・結合したセルの参照方法の利用方法を説明いたします。

 

 

●書式の説明  [  MargeCells ]

A = Range(”セル位置”).MergeCells     (例 :Aの値に指定セルの結果が代入されます。Trueは、結合・Falseは、解除 )

Range(”セル位置”)MergeCells = True / False  (設定:Trueは、結合・Falseは、解除※結合後は、左上端の値が保持される。

※複数セルを結合する場合に、各セルに値が登録されている場合は、下記のメッセージが表示されます。

メッセージを非表示させる場合は、【 Application.DisplayAlerts = False 】を結合前に入力します。

 

指定したセルの結合しているか調べる方法 (MergeCells)

 

●プログラム説明 サンプルプログラム①

下記のプログラムは、セルのA1からA6のセルの状況を調べるプログラムです。結果をC列のセルに表示されます。(結合セルは、True・結合していないセル(解除)は、False

 

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

 

 

●実行前~実行後 ※セルのA1~A6までのセル状況をC列に表示されました。
(画像クリックして拡大)

 

 

指定したセルの結合とセルの結合解除の方法 (MergeCells)

 

 

●プログラム説明 サンプルプログラム②
(画像クリックで拡大)
下記のプログラムは、下表の4月・5月・6月のセルを結合して”第1四半期”を表示させ、再度、セルを解除して形に戻します。

 

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

 

 

●実行前~実行後 ※実行後、4月から6月のセル(B2~D2)が結合され一つのセルなり、「第1四半期」として文字が代入されます。その後、結合を解除して元の4月~6月が表示させます。  (クリックして拡大)

 

 

 

結合しているセルを参照・入力・クリアーする方法(MergeCells)

 

 

●書式の説明  [  MargeArea]

A = Range(”セル位置”).MergeArea.Address     ※結合されたセルの範囲を返します。

Range(”セル位置”).MergeArea = ”文字列・数値など”     ※結合されたセルに文字列・数字などを入力します。

Range(”セル位置”).MergeArea.ClearContents       ※結合されたセルの内容をクリアーします。

 

 

●プログラム説明 サンプルプログラム③

下表は、サンプルで作成したショッピングビルのフロアー図です。E列(西側)のセルが結合されているセル範囲(Address)をI列に記入するプログラムです。

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

 

 

●実行前~実行後 ※実行後、E列(西側)に係わるセル結合した範囲(アドレス)がI列に記入されE列に係わるセルの背景色が赤色にぬられました。
(画像クリックして拡大)

 

 

●プログラム説明  サンプルプログラム③
次のサンプルプログラムは、下表にサンプルで作成したショッピングビルのフロアー図にある内容の一部をクリアーして、文字を書き換えます。

 

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

 

●実行前~実行後 ※ セル結合した「屋上」と「3F」のセル内容を文字列クリアーして、屋上は「屋上動物園」・3Fは、「本屋」を記入されました。MergeAreaを使う事で、範囲内にあるセルは、どのセルを選択しても、クリアーや文字列の記入ができます。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

 

AKIRA