Excel VBA

【Excel VBA】【マクロ】【Tips】指定シートの指定セルから連番を振るマクロ

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回は連番を振るマクロです!

指定シートの指定セルから連番を振るマクロ

例えば以下の図のようにB列にデータが入っているとします。

A列に連番を振りたいと思ったときに、どのようなマクロを組むでしょうか?
このくらいのデータなら、Forなどのループを使って1から順に入れていくのもありかと思います。
ですが、何万行とデータがあったときにループを使うのは非常に時間がかかってしまいます。
手作業でやる場合、オートフィルを使うと思います。
マクロでもオートフィルを使うことができるので、やってみましょう!!
手動でオートフィルを使う動きと似ているので、イメージしながら見てみてください。

汎用性を高めるため、メインのプロシージャから連番を振るマクロを呼び出すコードにしています。必要に応じて呼び出し側の引数を変更してください。

コード

Sub Main()
    Call AssignNumber(ActiveSheet, Range("A2"))
End Sub

Sub AssignNumber(sh As Worksheet, rng As Range)
    Dim endRow As Long
    
    rng = 1
    rng.Offset(1, 0) = 2
    endRow = rng.Offset(, 1).End(xlDown).Row   '下方向に最終行を検索する
    sh.Range(rng, rng.Offset(1, 0)).AutoFill Destination:=Range(rng, sh.Cells(endRow, rng.Column))
End Sub

コードの説明

●呼び出し元のプロシージャ

連番を振るプロシージャをCallで呼び出します。
引数は対象のシートと、連番を振る最初のセルの2つです。
シートはアクティブシート、セルはA2セルを指定しています。
(必要に応じて変更してくださいね)

●呼び出し先のプロシージャ(連番を振るマクロ)

最終行を入れる変数を用意します。
引数で指定された連番を振る最初のセルに「1」を入れます。
Offisetを使い、1つ下のセルに2を入れます。
1つ右の列の最終行を取得します。
AutoFillメソッドを使い、連番開始セルと最終行のセルを指定して
連番を入力します。

さいごに

手作業でオートフィルを使う動きと似ているため、イメージしやすいのではないでしょうか。
ぜひ使ってみてください!

Lenoco

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です