大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、テーブルに値を追加するには、「.ListRows.Add」を使うとできます。一括で、テーブルに入力したい場合は、「.Copy」や「配列」を使うとできます。VBAでテーブルの操作を自動化していきましょう。

はじめに

この記事では、テーブルに値を追加する方法について、ご紹介します。

行を追加して値を追加したい場合は、「.ListRows.Add」が使えます。

最終行に値を追加したい場合は、「.Rows.Count + 1」で最終行に値を入力するとできます。

値を一括で入力したい場合は、「.Copy」や「配列」を使うとできます。

VBAでテーブルを操作して、自動化していきましょう。

では、テーブルに値を追加する方法について、解説していきます。

この記事を読むメリット

  • テーブルに値を追加する方法がわかります

目次から見たい項目へ移動すると便利ですよ。

目次

テーブルの最終行に値を追加する

テーブルの最終行に、値を追加してみます。

テーブルを1行追加

まず、テーブルを1行追加する方法です。

「.ListRows.Add」を使います。

Sub TEST1()
    
    '行を追加
    ActiveSheet.ListObjects("テーブル1").ListRows.Add
    
End Sub

テーブルを用意しておきます。

テーブルを用意

テーブルを用意しておきます

実行すると、最終行に行を追加できます。

最終行に行を追加できた

最終行に行を追加できました

最終行に行を追加できました。

テーブルを1行追加して値を追加

テーブルを1行追加して、値を追加してみます。

Sub TEST2()
    
    With ActiveSheet.ListObjects("テーブル1")
        '行を追加
        .ListRows.Add
        '最終行に値を入力
        .Range(.Range.Rows.Count, 1) = "AAA"
    End With
            
End Sub

テーブルを用意しておきます。

テーブルを用意

テーブルを用意しておきます

VBAコードを実行すると、まず、最終行に行が追加されます。

行が追加される

最終行に行が追加されます

追加した最終行に、値が入力されます。

最終行に値を追加できた

最終行に値を入力できました

最終行に値を入力できました。

最終行に値を入力したい場合は、次のようにすると簡単です。

テーブルの最終行に値を追加

直接、テーブルの最終行に値を追加してみます。

最終行に値を追加

最終行の1行下を「.Range.Rows.Count + 1」で取得して、入力します。

Sub TEST3()
    
    With ActiveSheet.ListObjects("テーブル1")
        '最終行に値を追加
        .Range(.Range.Rows.Count + 1, 1) = "AAA"
    End With
            
End Sub

テーブルを用意しておきます。

テーブルを用意しておきます

実行すると、テーブルの最終行に値を追加できます。

テーブルの最終行に値を追加できました

テーブルの最終行に値を追加できました。

構造化参照で、最終行に値を追加

構造化参照で、最終行に値を追加してみます。

構造化参照の場合は、「.Rows.Count + 1」とします。

Sub TEST4()
    
    With Range("テーブル1")
        '最終行に値を追加
        .Cells(.Rows.Count + 1, 1) = "AAA"
    End With
            
End Sub

実行すると、構造化参照で、テーブルの最終行に値を追加できます。

構造化参照で、テーブルの最終行に値を追加できました

構造化参照で、テーブルの最終行に値を追加できました。

最終行に値を追加したい場合は、「.Rows.Count + 1」で直接入力する方が、簡単です。

テーブルの特定行に値を追加する

次は、テーブルの「特定行」に値を追加してみます。

3行目に値を追加

3行目に値を追加するVBAコードです。

Sub TEST5()
    
    With ActiveSheet.ListObjects("テーブル1")
        '3行目に行を追加
        .ListRows.Add 3
        '3行目に値を入力
        .Range(4, 1) = "AAA"
    End With
    
End Sub

テーブルの途中に行を追加する場合は、「.DataBodyRange」を使った方が、数字が同じになるのでわかりやすいです。

Sub TEST6()
    
    With ActiveSheet.ListObjects("テーブル1")
        '3行目に行を追加
        .ListRows.Add 3
        '3行目に値を入力
        .DataBodyRange(3, 1) = "AAA"
    End With
    
End Sub

テーブルを用意しておきます。

テーブルを用意

テーブルを用意しておきます

実行すると、まず、テーブルの3行目に行が追加されます。

3行目に行が追加される

テーブルの3行目に行を追加できました

次に、テーブルの3行目に値が入力されます。

3行目に値を入力できた

テーブルの3行目に値を入力できました

テーブルの3行目に値を入力できました。

テーブルに値を貼り付けて追加

テーブルに値を貼り付けて、値を追加してみます。

Copyを使って値を貼り付ける

「.Copy」を使って値を貼り付けると、値を一括で追加できます。

値を貼り付ける

「.Copy」を使って、値を貼り付けるVBAコードです。

Sub TEST7()
    
    'テーブルに値を貼り付け
    Range("F3").CurrentRegion.Copy ActiveSheet.ListObjects("テーブル1").Range(2, 1)
    
End Sub

テーブルと、貼り付ける値を用意しておきます。

テーブルと、貼り付ける値を用意しておきます

実行すると、テーブルに値を貼り付けできます。

テーブルに値を貼り付けできました

テーブルに値を貼り付けできました。

構造化参照で、値を貼り付ける

構造化参照で、値を貼り付けてみます。

構造化参照の方がVBAコードがシンプルになります。

Sub TEST8()
    
    'テーブルに値を貼り付け
    Range("F3").CurrentRegion.Copy Range("テーブル1")
    
End Sub

実行すると、構造化参照を使って、テーブルに値を貼り付けできます。

構造化参照を使って、テーブルに値を貼り付けできました

構造化参照を使って、テーブルに値を貼り付けできました。

特定列のみ値を貼り付ける

特定列のみ値を貼り付けてみます。

特定列のみ値を貼り付ける

特定列のみの場合は、「.ListColumns(列の名前)」を使います。

Sub TEST9()
    
    '「名前」の列に貼り付け
    Range("F3").CurrentRegion.Copy ActiveSheet.ListObjects("テーブル1").ListColumns("名前").Range(2, 1)
    
End Sub

テーブルと、貼り付ける値を用意しておきます。

テーブルと、貼り付ける値を用意しておきます

実行すると、「名前」の列に貼り付けできます。

「名前」の列に貼り付けできました

「名前」の列に貼り付けできました。

構造化参照で、特定列のみ値を貼り付ける

構造化参照で、特定列のみ値を貼り付けてみます。

「.Range("テーブル名[列の名前]")」というように入力します。

Sub TEST10()
    
    '「名前」の列に貼り付け
    Range("F3").CurrentRegion.Copy Range("テーブル1[名前]")
    
End Sub

実行すると、構造化参照で、「名前」の列に貼り付けできます。

構造化参照で、「名前」の列に貼り付けできました

構造化参照で、「名前」の列に貼り付けできました。

最終行に値を貼り付ける

最終行に値を貼り付けてみます。

最終行に値を貼り付ける

最終行に貼り付けたいので、「.Range.Rows.Count + 1」とします。

Sub TEST11()
    
    With ActiveSheet.ListObjects("テーブル1")
        'テーブルの最終行に値を貼り付け
        Range("F3").CurrentRegion.Copy .Range(.Range.Rows.Count + 1, 1)
    End With
    
End Sub

テーブルと、貼り付ける値を用意しておきます。

テーブルと、貼り付ける値を用意しておきます

実行すると、テーブルの最終行に、値を貼り付けできます。

テーブルの最終行に、値を貼り付けできました

テーブルの最終行に、値を貼り付けできました。

構造化参照で、最終行に値を貼り付ける

構造化参照で、最終行に値を貼り付けてみます。

構造化参照の場合は、「.Rows.Count + 1」とします。

Sub TEST12()
    
    With Range("テーブル1")
        'テーブルの最終行に値を貼り付け
        Range("F3").CurrentRegion.Copy .Cells(.Rows.Count + 1, 1)
    End With
    
End Sub

実行すると、構造化参照で、最終行に値を貼り付けできます。

構造化参照で、最終行に値を貼り付けできました

構造化参照で、最終行に値を貼り付けできました。

配列をテーブルに入力する

次は、配列をテーブルに入力してみます。

Resizeを使って値を入力する

配列をテーブルに入力したい場合は、「Resize」を使って値を入力します。

配列をテーブルに入力

配列をテーブルに入力するVBAコードです。

Sub TEST13()
    
    Dim A
    '配列を作成
    A = Range("F3").CurrentRegion
    
    'テーブルに、配列を入力
    ActiveSheet.ListObjects("テーブル1").Range(2, 1).Resize(3, 3) = A
    
End Sub

応用が利くように「UBound」を使うと、便利です。

Sub TEST14()
    
    Dim A
    '配列を作成
    A = Range("F3").CurrentRegion
    
    'テーブルに、配列を入力
    ActiveSheet.ListObjects("テーブル1").Range(2, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
    
End Sub

テーブルと、入力する値を用意しておきます。

テーブルと、入力する値を用意しておきます

実行すると、配列をテーブルに入力することができます。

配列をテーブルに入力することができました

配列をテーブルに入力することができました。

構造化参照で、配列をテーブルに入力

構造化参照で、配列をテーブルに入力してみます。

同じように「.Resize」を使います。

構造化参照の方が、VBAコードがシンプルになります。

Sub TEST15()
    
    Dim A
    '配列を作成
    A = Range("F3").CurrentRegion
    
    'テーブルに、配列を入力
    Range("テーブル1").Resize(UBound(A, 1), UBound(A, 2)) = A
    
End Sub

実行すると、構造化参照で、配列をテーブルに入力できます。

構造化参照で、配列をテーブルに入力できました

構造化参照で、配列をテーブルに入力できました。

特定列のみ値を入力する

特定列のみに、配列を入力してみます。

特定列のみ配列を入力

特定列のみ配列を入力するVBAコードです。

特定列の場合は、「.ListColumns」と「.Resize」を組み合わせます。

Sub TEST16()
    
    Dim A
    '配列を作成
    A = Range("F3").CurrentRegion
    
    '「名前」の列に、配列を入力
    ActiveSheet.ListObjects("テーブル1").ListColumns("名前").Range(2, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
    
End Sub

テーブルと、入力する値を用意しておきます。

テーブルと、入力する値を用意しておきます

実行すると、「名前」の列に、配列を入力できます。

「名前」の列に、配列を入力できました

「名前」の列に、配列を入力できました。

構造化参照で、特定列のみ配列を入力

構造化参照で、特定列のみ配列を入力してみます。

Sub TEST17()
    
    Dim A
    '配列を作成
    A = Range("F3").CurrentRegion
    
    '「名前」の列に、配列を入力
    Range("テーブル1[名前]").Resize(UBound(A, 1), UBound(A, 2)) = A
    
End Sub

実行すると、構造化参照で、「名前」の列に、配列を入力できます。

構造化参照で、「名前」の列に、配列を入力できました

構造化参照で、「名前」の列に、配列を入力できました。

最終行に入力する

次は、配列を、テーブルの最終行に入力してみます。

最終行に配列を入力

最終行に配列を入力するVBAコードです。

「.Range.Rows.Count + 1」と「.Resize」を組み合わせます。

Sub TEST18()
    
    Dim A
    '配列を作成
    A = Range("F3").CurrentRegion
    
    With ActiveSheet.ListObjects("テーブル1")
        'テーブルの最終行に、配列を入力
        .Range(.Range.Rows.Count + 1, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
    End With
    
End Sub

テーブルと、入力する値を用意しておきます。

テーブルと、入力する値を用意しておきます

実行すると、テーブルの最終行に、配列を入力することができます。

テーブルの最終行に、配列を入力することができました

テーブルの最終行に、配列を入力することができました。

構造化参照で、最終行に配列を入力

構造化参照で、テーブルの最終行に配列を入力してみます。

構造化参照の場合は、「.Rows.Count」と「.Resize」を組み合わせます。

Sub TEST19()
    
    Dim A
    '配列を作成
    A = Range("F3").CurrentRegion
    
    With Range("テーブル1")
        'テーブルの最終行に、配列を入力
        .Cells(.Rows.Count + 1, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
    End With
    
End Sub

実行すると、構造化参照を使って、テーブルの最終行に配列を入力できます。

構造化参照を使って、テーブルの最終行に配列を入力できました

構造化参照を使って、テーブルの最終行に配列を入力できました。

おわりに

この記事では、テーブルに値を追加する方法について、ご紹介しました。

行を追加して値を追加したい場合は、「.ListRows.Add」が使えます。

最終行に値を追加したい場合は、「.Rows.Count + 1」で最終行に値を入力するとできます。

値を一括で入力したい場合は、「.Copy」や「配列」を使うとできます。

VBAでテーブルを操作して、自動化していきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す