6/16/2022

Excel。VBA。毎回連番を設定するのが面倒なので、どうにかしたい【Serial number】

Excel。VBA。毎回連番を設定するのが面倒なので、どうにかしたい

<Excel VBA:AutoFillメソッド>

「1・2・3…」と繰り返す連番を毎回毎回設定するのは、簡単な作業だからこそ、面倒になるわけですね。


例えば、次の表。


A2:A6に連番を設定するならば、For To Next文をつかって繰り返す方法があります。

Sub 連番()

    Dim i As Integer

    For i = 2 To 6

        Cells(i, "a").Value = i - 1

    Next

End Sub


説明すると、

Dim i As Integer は、変数宣言ですね。


For i = 2 To 6 ~ Next は、繰り返し構文です。


Cells(i, "a").Value = i – 1 は、iが2の場合、A2に2-1。

つまり1を代入することができます。


これで、問題は全くないのですが、Excelの機能同様にプログラム文には色々な対方法があります。


例えば、次のプログラム文でも連番を設定することができます。

Sub 連番()

    Range("a2") = 1

    Range("a2").AutoFill Destination:=Range("a2:a6"), Type:=xlFillSeries

End Sub


では、実行してみましょう。


このように、連番を設定することができました。


最初のセルのA2に「1」を入力したら、オートフィルの「連続データ」を選択すると連番を設定できる方法をプログラム文にしたものです。


AutoFillメソッドをつかうと、オートフィル機能をつかえます。


Destination:=Range("a2:a6")は、Destinationですから、どこまでということで、範囲のことですね。


さらに、「Type:=xlFillSeries」を追記することで、「連続データ」とすることができます。


処理速度や可読性など、考えて設定する必要があるとは思いますが、まずはわかりやすい方で慣れていくというのがいいのかもしれませんね。