Categories: VBA基礎

EXCEL VBA セルの挿入・行の挿入・列の挿入・セルの削除・行の削除・列の削除( Insert / Delete )

EXCEL VBA セルの挿入・行の挿入・列の挿入・セルの削除・行の削除・列の削除( Insert / Delete )

 

●はじめに
EXCELの表にセルの挿入や行の挿入・列の挿入など、作成した表にデータなどを追加する時に、セルを挿入する事があります。その時にInsert メゾットを利用して入力するセルを追加します。Insert メゾットを利用してセルに挿入する場合、シフト方向を指定したり、挿入するセルに指定した書式を適用する事もできます。それでは、セルを挿入する際に利用する「Insert 」メゾットの利用方法を説明いたします。

 

[書式の説明]

●書式の説明 (Insert : セルの挿入・行の挿入・列の挿入)

Range.Insert(shift:=セルのシフト方向,CopyOrigin:=書式元のセル位置)

 

挿入:定数(Shift)移動方向
.Insert shift:=xlShiftToRight右方向にシフト
.Insert shift:=xlShiftDown下方向にシフト
.EntireRow.Insert行全体
.EntireColumn.Insert 列全体

 

挿入:定数(CopyOrigin)書式のコピー元
CopyOrigin:=xlFormatFormLeftOrAbove左か上の書式をコピー
CopyOrigin:=xlFormatFromRightOrBelow右が下の書式をコピー

 

セルの挿入・行の挿入・列の挿入 ( Insert )

 

●プログラム説明 指定した行(範囲)の挿入(サンプル①)
セルの挿入を行います。(B5~E5に下方向にシフトかつ右が下の書式をコピーします。)

 

Sub insert_Cells01() ' 下方向にシフトかつ右が下の書式をコピー

    Range("B5:E5").Insert shift:=xlShiftDown, CopyOrigin:=xlFormatFromRightOrBelow
    
    Range("2:10").Rows.AutoFit  '2~10行までの行を自動調整

End Sub

 

●実行前と実行後 ※指定したB5~E5下の書式をコピーしてセルを挿入されました
(画像クリックして拡大)

 

 

●プログラム説明 指定した列(範囲)の挿入(サンプル②)
指定した列にセルを挿入します。(D2~D8に間の列に右方向にシフトかつ右が下の書式をコピーしてセルを挿入)

 

Sub insert_Cells02() ' 右方向にシフトかつ右か下の書式をコピー

    Range("D2:D8").Insert shift:=xlShiftToRight, CopyOrigin:=xlFormatFromRightOrBelow
    
    Columns("B:H").AutoFit  'B~H列までの幅を自動調整
    
End Sub

 

●実行前と実行後 ※指定したD2~D8に右か下の書式をコピー して列が挿入されました。
※注意:セルを挿入した場合、参照するセル位置が変わるので、数式をセルに入力している場合は注意が必要です。例(月計5月)
(画像クリックして拡大)

 

 

●プログラム説明 指定した行全体の挿入(サンプル③)
指定した行全体にセルを挿入します。(5行目に1行分挿入)

 

Sub insert_Cells03() '行全体 .EntireRow.Insert
        
    Rows("5:5").EntireRow.Insert  '5行目に挿入(1行分)
    
    'Rows("5:6").EntireRow.Insert  '5行目に挿入(2行分)
    
    'Rows("5:5").Insert shift:=xlShiftDown, CopyOrigin:=xlFormatFromRightOrBelow

End Sub

 

●実行前と実行後 ※5行目を指定したので5行目全体にセルが挿入されました。
※注意:行全体を挿入した場合、指定した行全体に挿入されるので、別の表が壊される可能性もありますので、注意してください。
(画像クリックして拡大)

 

 

 ●プログラム説明 指定した列全体の挿入(サンプル④)
指定した列全体にセルを挿入します。(D列に1列分挿入)

 

Sub insert_Cells04() '列全体 .EntireColumn.Insert

    Columns("D:D").EntireColumn.Insert 'Dの列に挿入(1列分)
    
    'Columns("D:E").EntireColumn.Insert 'D~Eの列に挿入(2列分)

    'Columns("D:D").Insert shift:=xlShiftToRight, CopyOrigin:=xlFormatFromRightOrBelow

End Sub

 

 

●実行前と実行後 ※Dの列を指定したので、D列全体にセルがに挿入されました。
※注意:列全体を挿入した場合、指定した列全体に挿入されるので、別の表が壊される可能性もありますので、注意してください。
(画像クリックして拡大)

 

 

 

EXCEL VBA セルの削除・行の削除・列の削除( Delete )

 

●書式の説明   (Delete:  セルの削除・行の削除・列の削除)
Range.Delete(shift:=セルのシフト方向)

 

削除:定数(Shift)移動方向
.Delete shift:=xlToLeft左方向にシフト
.Delete shift:=xlShiftUp上方向にシフト
.EntireRow.Delete行全体
.EntireColumn.Delete列全体

 

●プログラム説明  指定した列(範囲)を削除します(サンプル①)
セルの削除を行います。(D2~D8に左方向にシフトしてセルを削除します。)

 

Sub Delete_Cells01() 

    Range("D2:D8").Delete shift:=xlToLeft ' 削除して左方向にシフト 
    
    Columns("B:H").AutoFit 'B~H列までの幅を自動調整

End Sub

 

 

●実行前・実行後 ※D2~D8のセルが削除され、削除された部分が左にシフトされました。
(画像クリックして拡大)

 

 

●プログラム説明  指定した行(範囲)を削除します(サンプル②)
セルの削除を行います。(B5~E5に上方向にシフトしてセルを削除します。)

 

Sub Delete_Cells02() ' 削除して上方向にシフト

    Range("B5:E5").Delete shift:=xlShiftUp  ' 削除して上方向にシフト
        
End Sub

 

 ●実行前・実行後 ※B5~E5のセルが削除され、削除された部分が上にシフトされました。

 

 

●プログラム説明  指定した行全体を削除します(サンプル③)
セルの削除を行います。(5行目を削除して上方向にシフトします。)

 

Sub Delete_Cells03() '行全体の削除
        
    Rows("5:5").EntireRow.Delete  '5行目を削除(1行分)
    
    'Rows("5:6").EntireRow.Delete  '5~6行目を削除(2行分)
    
End Sub

 

 

●実行前・実行後 ※5行目全体が削除され、削除された部分が上にシフトされました。
(画像クリックして拡大)

 

 

●プログラム説明  指定した列全体を削除します(サンプル④)
セルの削除を行います。(D列を削除して左方向にシフトします。)

 

Sub Delete_Cells04() '列全体の削除

    Columns("D:D").EntireColumn.Delete 'Dの列を削除(1列分)
    
    'Columns("D:E").EntireColumn.Delete 'D~E列を削除(2列分)

End Sub

 

 

 ●実行前・実行後 ※D列全体が削除され、削除された部分が左方向にシフトされました。
(画像クリックして拡大)

 

 

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

 

AKIRA