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