154:エクセル素材 セルを結合するマクロ

エクセルの画像100:エクセル

セルが結合されたところに、貼り付けをすると、「この操作は結合したセルには行えません」のエラーが出てしまいます。

そこれ、事前にA列に1列をいれておき、貼り付けしたい形式を合わせるために、セルを結合するマクロを作成しました。

上記エクセルの説明

上記エクセルは、実行した結果の内容です。


‘ E5のセルに初めの行を入れておく
‘ F5のセルに最終行+1の数字を入れておく
‘ G5のセルに結合する列を入れておく
‘ H5には、G5の数字に合わせて、列番号がでるようにvlookupにて計算式をたてておく

H5の式は、=+HLOOKUP(G5,A1:N2,2,0) です。

①まず、A列に、1行のみ、貼り付けたい行を値コピーしておきます。

②スタートボタン押す。

③上記エクセルの結果のようになりますので、必要な部分をコピーして

④貼り付けたいファイルに移動して貼付してください。

マクロ

Sub セルの結合()

'
' Macro 貼り付け先が、セルが結合されていると値貼付できないため
'A列に入れたものを、指定する列分だけセルを結合するマクロです。
'
'
' E5のセルに初めの行を入れておく
' F5のセルに最終行+1の数字を入れておく
' G5のセルに結合する列を入れておく
' H5には、G5の数字に合わせて、列番号がでるようにvlookupにて計算式をたてておく
N = Cells(5, 5)
P = Cells(5, 6)
列記号 = Cells(5, 8)

Do While N < P
範囲 = "A" & N & ":" & 列記号 & N
N = N + 1

    Range(範囲).Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
Loop
    
End Sub

マクロの説明

N = Cells(5, 5)  初めの行をNの変数に入れます。この場合は、E5セル

P = Cells(5, 6)  終わりの行をPの変数に入れます。この場合は、F5セル

列記号 = Cells(5, 8) 行数を指定したのは数なので、数を列記号に変換して、列記号という変数に入れます。

次は、ループの公式です。初めの行Nが最終行Pより小さいときにぐるぐる中身を回すものです。

Do While N < P
N = N + 1
Loop

  範囲 = “A” & N & “:” & 列記号 & N

上記は、NとPと列記号から、セルを結合する範囲を作成しております。A19:G19のような形を作ってます。

Range(範囲).Select

範囲の文字を作ったら、その範囲を選択しています。

    With Selection

    End With

With Selection ~ End With は、いらないかもですが、この部分がないと、センタリングとかなくなってしまうので、

たぶん、貼り付け先は、セルを結合した形式なので、そのままにしておきましょう。

以下が、今回の目玉のセルを結合する記述となります。

    Selection.Merge

もう一つのマクロ

行削除のボタンも作っておきました。

一度、セルの結合をされたところを元に戻す作業が必要なので、どうしたら、元に戻せるかを考えたところ、行削除するのが、良いと考えました。以下のような感じになりました。

Sub 行削除()
'
N = Cells(5, 5)
P = Cells(5, 6)
行 = N & ":" & P
    Rows(行).Select
    Selection.Delete Shift:=xlUp
    Range("A1").Select
End Sub

コメント

タイトルとURLをコピーしました