こんにちは、Ryoです。
指定されたセル範囲にオートフィル機能を実行するAutoFillメソッドがありますが、オートフィルパターンによって様々な連続データを入力することができますので、今回はその内容について書いていきます。
1.サンプル概要
サンプルとして以下の表を作成しています。AutoFillメソッドの引数Typeに指定する定数に合わせた項目に対して処理を実行します。
セルD2とE2は文字列データとしての「1」を入力し、「書式のみコピー」「書式なしコピー」の処理を行っています。

処理結果としては以下の通りですが、「乗算」についてはセルK2に「2」を入力することでセルK1に対し「2倍」の判定となり、その状態をオートフィルするので2倍ずつ増えています。

ちなみにセルK2に「3」を入力すれば「3倍」判定なので、この通りの結果になります。

また、セルD2は書式のみコピーしているので、セルD3~D6 は手動入力すると文字列扱いとなり、書式なしコピーしたセルE3~E6は「1」を数値として扱う形になります。

以上がサンプル概要になります。
2.サンプルコード
Sub Sample1()
Dim i, n As Integer
For i = 1 To 11
Select Case i
Case 1
n = 0 'xlFillDefault 標準のオートフィル
Case 2
n = 1 'xlFillCopy コピー
Case 3
n = 2 'xlFillSeries 連続データ
Case 4
n = 3 'xlFillFormats 書式のみコピー
Case 5
n = 4 'xlFillValues 書式なしコピー
Case 6
n = 5 'xlFillDays 日単位
Case 7
n = 6 'xlFillWeekdays 週単位
Case 8
n = 7 'xlFillMonths 月単位
Case 9
n = 8 'xlFillYears 年単位
Case 10
n = 9 'xlLinearTrend 加算
Case 11
n = 10 'xlGrowthTrend 乗算
Cells(3, i).Value = 2
Range(Cells(2, i), Cells(3, i)).AutoFill Destination:= _
Range(Cells(2, i), Cells(6, i)), Type:=n
Exit For
End Select
Cells(2, i).AutoFill Destination:= _
Range(Cells(2, i), Cells(6, i)), Type:=n
Next i
End Sub
指定されたセル範囲にオートフィル機能を実行する場合は「AutoFillメソッド」を実行します。
構文:オブジェクト.AutoFill(Destination, Type)
引数Typeにオートフィルのパターンを定数で指定します。
◆引数Typeに指定するxlAutoFillTypeクラスの定数
| 定数 | 値 | 内容 |
| xlFillDefault | 0 | 標準のオートフィル |
| xlFillCopy | 1 | コピー |
| xlFillSeries | 2 | 連続データ |
| xlFillFormats | 3 | 書式のみコピー |
| xlFillValues | 4 | 書式なしコピー |
| xlFillDays | 5 | 日単位 |
| xlFillWeekdays | 6 | 週単位 |
| xlFillMonths | 7 | 月単位 |
| xlFillYears | 8 | 年単位 |
| xlLinearTrend | 9 | 加算 |
| xlGrowthTrend | 10 | 乗算 |
サンプルでは繰り返し処理の都合上、値を利用しています。引数Destinationには基準となるセルを含めないとエラーとなりますので、サンプルコードでもセルの行2~6という指定の形にしています。
今回のサンプルコードのように引数Typeの順に処理を行う場合、以下のように書き換えても同様の結果になりますので、ご参考までに。
Sub Sample2()
Dim i As Integer
For i = 1 To 11
If i = 11 Then
Cells(3, i).Value = 2
Range(Cells(2, i), Cells(3, i)).AutoFill Destination:= _
Range(Cells(2, i), Cells(6, i)), Type:=i - 1
Else
Cells(2, i).AutoFill Destination:= _
Range(Cells(2, i), Cells(6, i)), Type:=i - 1
End If
Next i
End Sub
3.まとめ
Excel操作の上でオートフィル機能を利用することは多々ありますが、VBAで扱うことで以前に投稿した記事のようなことを行うこともできます。

扱うTypeの挙動さえ理解してしまえばそれほど難しい処理でもありませんので、利用機会があればぜひご活用ください。
以上、AutoFillで連続データ入力などを行う方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo

