教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA セル操作】行または列を挿入(Insert)する方法を教えて!

構文

Insertメソッドは、指定した範囲に新しいセルや行/列を挿入します。

セルを挿入する場合

構文は以下の通りです。

Worksheets("シート名").Range("セル範囲").Insert Shift:=xlDown

解説

Worksheetsのシート名には、セルを挿入したいシートの名前を指定します。Rangeのセル範囲には、新しいセルを挿入したい場所を指定します。例えば、A1セルからB5セルまでの間に新しいセルを挿入したい場合は、「A1:B5」と指定します。Shiftには挿入する際にシフトする方向を指定します。この例では、「xlDown」と指定しているため、上にあるセルが下にシフトします。

行を挿入する場合

構文は以下の通りです。

Worksheets("シート名").Rows("行番号").Insert Shift:=xlDown

解説

Worksheetsのシート名には、行を挿入したいシートの名前を指定します。Rowsの行番号には、新しい行を挿入したい場所の行番号を指定します。例えば、3行目に新しい行を挿入したい場合は、「3」と指定します。

列を挿入する場合

構文は以下の通りです。

Worksheets("シート名").Columns("列名または列番号").Insert Shift:=xlToRight

解説

Worksheetsのシート名には、列を挿入したいシートの名前を指定します。Columnsの列名または列番号には、新しい列を挿入したい場所の列名または列番号を指定します。例えば、B列に新しい列を挿入したい場合は、「B」と指定します。Shiftには挿入する際にシフトする方向を指定します。この例では、「xlToRight」と指定しているため、左にある列が右にシフトします。

使い方

具体的な使い方を紹介します。

(例1)A1セルに新しい行を挿入

Sub InsertRow()
    Worksheets("Sheet1").Rows(1).Insert Shift:=xlDown
End Sub

(例2)B列に新しい列を挿入

Sub InsertColumn()
    Worksheets("Sheet1").Columns("B").Insert Shift:=xlToRight
End Sub

プログラミング例

以下に、プログラミング例を紹介します。

Sub InsertData()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("成績表")
    ' 成績表にデータを入力
    ws.Range("A1").Value = "氏名"
    ws.Range("B1").Value = "テスト1"
    ws.Range("C1").Value = "テスト2"
    ws.Range("A2").Value = "山田太郎"
    ws.Range("B2").Value = 85
    ws.Range("C2").Value = 92
    ' 新しい行を2行目に挿入
    ws.Rows(2).Insert Shift:=xlDown
End Sub

このコードを実行すると、成績表の2行目に新しい行が挿入されます。

まとめ

Insertメソッドを使うことで、指定した範囲に新しいセル/行/列を挿入することができます。データの追加やシートのカスタマイズに便利なメソッドです。是非活用してください。