こんにちは、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