Excel VBAの自動採番処理を解説!コードの各行の役割とは

Visual Basic

Excel VBAを使って自動採番を行うコードについての解説です。具体的なコードを順番に解説して、各行がどのような処理を行っているのかを詳しく説明します。自動採番を使用することで、データ入力がより効率的になりますので、VBA初心者の方にも理解しやすいように解説を行います。

コードの全体像

まず、このVBAコードは、Excelシート「出荷指示」のK列とX列を使って、自動で番号を付ける処理を行っています。K列にはデータが入力されており、X列にはそのデータに基づいて番号が付与されます。

コード解説

Sub 自動採番()
この行は、VBAのサブルーチン(Sub)の開始を示します。サブルーチンは、実行可能なコードのまとまりで、このコード全体を実行するための基盤です。

Worksheets(“出荷指示”).Select
「出荷指示」シートを選択しています。Excelのシートを操作するために必要な命令です。

Dim r0 As Long, r1 As Long
変数r0とr1をLong型として定義しています。これらの変数は、ループ処理で使用され、行番号を管理します。

Dim n As Long
nという変数をLong型として定義します。これは、採番する際に使用される番号を格納するために使われます。

For r0 = 2 To Cells(Rows.Count, “K”).End(xlUp).row
K列のデータの最終行までループ処理を行います。2行目から最終行までが対象となります。

If r0 = 2 Then
もしr0が2行目であれば、最初の番号(n)を1に設定します。これが採番の初期値となります。

n = 1
nに1を設定しています。採番は1からスタートします。

Cells(r0, “X”).Value = n
X列のr0行目に番号nを入力します。

ElseIf Cells(r0, “X”).Value = “” Then
もしX列に番号が入力されていない場合に、この条件が成立し、次の処理が行われます。

For r1 = r0 – 1 To 2 Step -1
r0の前の行(r0-1行目)から2行目までを逆順でループします。これにより、既存の番号があるかどうかをチェックします。

If Cells(r0, “K”).Value = Cells(r1, “K”).Value Then
K列のr0行目の値とr1行目の値が一致する場合、既に同じ値が入力されているため、その行のX列の番号をコピーします。

Cells(r0, “X”).Value = Cells(r1, “X”).Value
一致した場合、r1行目のX列の値をr0行目のX列にコピーします。

Exit For
一致した時点でループを終了します。

ElseIf r1 = 2 Then
もしr1が2行目に到達した場合、まだ一致する番号が見つからなかったことを意味します。

n = n + 1
nを1つ増加させ、新しい番号を生成します。

Cells(r0, “X”).Value = n
新しい番号nをX列に入力します。

Next r1
r1のループを次の行に進めます。

Next r0
r0のループを次の行に進めます。

まとめ

このVBAコードは、Excelのデータに自動的に番号を付けるためのものです。既存の番号が同じグループ内に存在する場合、その番号を引き継ぎ、新しいグループには新しい番号を付けるという仕組みです。これにより、手動で番号を入力する手間を省き、効率的に作業が進められます。

コメント

タイトルとURLをコピーしました