なぜAutoFillメソッドが重要なのか
Excel業務において、連番や日付、曜日などの「連続データ」を作成する機会は非常に多いはずです。手作業であればフィルハンドルをドラッグすれば一瞬ですが、マクロでこれを行う場合、単純なコピーでは対応できないケースが多々あります。AutoFillメソッドを使いこなせば、行数が動的に変わるリスト作成や、カレンダー生成などを自動化でき、事務作業の効率が劇的に向上します。
基礎知識:AutoFillメソッドの仕組み
AutoFillメソッドは、基準となるセルに入力された値を元に、指定した範囲へ連続データを自動生成する機能です。構文は以下の通りです。
Rangeオブジェクト.AutoFill(Destination, Type)
・Destination: 連続データを作成したい「範囲全体」を指定します。注意点として、必ず「基準となるセル(開始セル)」を含めた範囲を指定する必要があります。
・Type: オートフィルの種類を指定します。省略すると「標準(xlFillDefault)」が適用されますが、日付や月単位で生成したい場合は、列挙体(xlFillDaysやxlFillMonthsなど)を指定することで、目的に合わせた連番を作成できます。
実装のポイント:可変範囲への対応
実務では「何行までデータを作るか」が固定されていないことがほとんどです。そこで、Resizeプロパティを併用するのがベストプラクティスです。Resizeを使うことで、「基準セルを起点として、何行(または何列)先まで連続データを伸ばすか」を動的に制御できます。
サンプルプログラム:実務で使える連続データ作成
以下のコードは、A1セルを起点にして、任意の行数分だけ「月」の連続データを作成する例です。
Sub CreateSeriesData()
‘ 連続データを作成する行数
Dim targetRows As Long
targetRows = 12
‘ 処理対象のシートを明確にする
With ActiveSheet.Range(“A1”)
‘ 基準となる値をセット
.Value = “1月”
‘ Resizeを使って、基準セルを含む範囲を指定してオートフィルを実行
‘ .Resize(12) は A1:A12 を意味します
.AutoFill Destination:=.Resize(targetRows), Type:=xlFillDefault
End With
MsgBox “A1から” & targetRows & “行目まで連続データを作成しました。”
End Sub
応用・注意点:現場で陥りやすいバグを防ぐ
1. 範囲指定のミス: AutoFillのDestination引数には、必ず「開始セル自身」を含める必要があります。「開始セルの次のセルから」指定してしまうと、実行時エラーが発生しますので注意してください。
2. セルが空の場合: 基準となるセルが空白の状態でAutoFillを実行すると、エラーになります。必ず値をセットしてから実行する手順を守りましょう。
3. 型を指定するメリット: 単なる数値の連番ではなく「平日のみ(xlFillWeekdays)」や「月単位(xlFillMonths)」など、Type引数を活用することで、複雑なカレンダー表も数行のコードで作成可能になります。現場の要件に合わせて使い分けてください。
このメソッドをマスターすれば、帳票作成やデータ集計の自動化がぐっと身近になります。ぜひご自身の業務マクロに組み込んでみてください。
