【MOS】【Microsoft Office Excel】【マクロ/VBA】ExcelVBAで連番を振るマクロ
ExcelVBAで連番を振ってみます。
選択範囲内のセルに連番を振るマクロ
選択範囲内のセルに連番を振るには下記のようにしてください。
Sub insertNum1() '======================================= '選択範囲内のセルに連番を振るマクロ '======================================= ThisWorkbook.Activate '//変数の定義 Dim targetCell As Range '連番を振るセルをtargetCellという変数(範囲)で定義 Dim i As Long '連番の初期値をiという変数(数値)で定義 i = 1 '連番の初期値に「1」を代入 '//選択範囲内での繰り返し処理 For Each targetCell In Selection '//連番を振るセルの値を変更 targetCell.Value = i '//連番の数を増やす i = i + 1 Next '//メッセージを表示して終了 MsgBox ("A列に連番を振りました。") End Sub
B列の最終行分A1セルから連番を振るマクロ
B列に歯抜けのないデータがある時、B列のB1セルから最終行までの数分A1セルから連番を振る方法は下記のとおりです。
Sub insertNum2() '======================================= 'B列の最終行までA列に連番を振るマクロ '======================================= ThisWorkbook.Activate '//変数の定義 Dim targetCell As Range Dim maxRow, i As Long '//B列の最終行を求めてmaxRow変数に値を代入 If Len(ActiveSheet.Range("B1").Value) = 0 Then maxRow = 0 ElseIf Len(ActiveSheet.Range("B2").Value) = 0 Then maxRow = 1 Else maxRow = ActiveSheet.Range("B1").End(xlDown).Row End If '//B列の最終行の取得結果に応じて作業を分岐 If maxRow > 0 Then '//連番の初期値を設定 i = 1 '//選択範囲内での繰り返し処理 For i = 1 To maxRow '//連番を振るセルの値を変更 Range("A" & i).Value = i Next '//メッセージを表示して終了 MsgBox ("A列に連番を振りました。") Else '//メッセージを表示して終了(エラー) MsgBox ("B列にデータがないので作業を中断します。") End If End Sub