Excelでvbaを使用して行を挿入するにはどうすればよいですか?
このチュートリアルでは、Excel で VBA コードを使用して行または列を挿入する方法を説明します。また、このためのマクロを作成するさまざまな方法についても説明します。
VBA を使用して 1 行を挿入する
VBA コードを使用して行を挿入するには、「Insert」メソッドで「Whole Row」プロパティを使用する必要があります。行全体プロパティを使用すると、セルを使用して行全体を参照し、そこに新しい行を挿入できます。デフォルトでは、指定したセルの前に 1 行が挿入されます。
- まず、範囲オブジェクトを使用してセルを指定します。
- 次に、ドット (.) を入力して、プロパティとメソッドのリストを取得します。
- その後、「行全体」プロパティを選択または入力します。
- 最後にピリオド(.)を再度入力し、「挿入」メソッドを選択するか入力します。
Range("A1").EntireRow.Insert
コードはここで行を挿入する準備ができています。このコードを実行すると、セル A1 の前に新しい行が即座に挿入されます。
複数行を挿入する
私が見つけたスプレッドシートに複数の行を挿入するには 2 つの方法があります。 1 つ目は、上の例で使用したのと同じ挿入メソッドです。
この場合、挿入したい行数と同じ数の範囲を指定する必要があります。ここで、後に 5 行を挿入するとします。この場合、次のようなコードを使用できます。
正直に言うと、行数を変更したい場合は範囲を変更する必要があるため、この方法はあまり便利とは思えませんでした。
そこで、2番目の方法を紹介します。
Dim iRow As Long Dim iCount As Long Dim i As Long iCount = InputBox(Prompt:="How many rows you want to add?") iRow = InputBox _ (Prompt:="After which row you want to add new rows? (Enter the row number") For i = 1 To iCount Rows(iRow).EntireRow.Insert Next i
このコードを実行すると、追加する行数を入力してから、これらすべての行を追加する行番号を入力するよう求められます。 FOR (For Next) ループを使用してこの回数だけループし、行を 1 つずつ挿入します。
セル値に基づいて行を挿入する
セル値に基づいて行を挿入する場合は、次のコードを使用できます。
Dim iRow As Long Dim iCount As Long Dim i As Long iCount = Range("A1").Value iRow = Range("B1").Value For i = 1 To iCount Rows(iRow).EntireRow.Insert Next i
このマクロを実行すると、セル A1 の行数とセル B1 から行を追加する行が取得されます。
書式設定せずに行を挿入する
上の行に特定の書式設定が設定されている行を挿入すると、その行にも自動的にその書式設定が適用されます。この状況に対処する最も簡単な方法は、クリア フォーマットを使用することです。次のコードを考えてみましょう。
Rows(7).EntireRow.Insert Rows(7).ClearFormats
上記のコードを実行すると、 7 行目の前に新しい行が挿入されます。さて、 7 行目の前に行を挿入すると、その新しい行が7 行目になり、コードの 2 行目でその行の形式がクリアされます。
コピーした行を挿入
同じ方法を使用して行をコピーし、別の場所に挿入することもできます。次のコードを参照してください。
Application.CutCopyMode = False With Worksheets("Data") .Rows(5).Copy .Rows(9).Insert Shift:=xlShiftDown End With Application.CutCopyMode = True
関連するチュートリアル
- Excel で VBA を使用して行を数える
- Excel VBA フォント (色、サイズ、種類、太字)
- Excel VBA 列または行の表示と非表示を切り替える
- Excel VBA 範囲 – 範囲とセルの操作
- Excel で VBA を使用してセルに枠線を適用する