VBATips

a~zz(aa~zz)まで連続入力して採番する【Asc関数/For~Next】【ExcelVBA】

アルファベットでa~zまでで採番はこちらの記事でできます。
ただa~zまでの26文字で足りず、aa~zzまで採番したいケースがあります。

aa~zzで採番するサンプルコード

使用したい文字(小文字なのか大文字なのか、半角文字なのか全角文字なのか)でコードをコピペしてください。

Public Sub sample()
    Dim i As Long, k As Long
    
    '■A~Zまでを自動採番
    For i = Asc("A") To Asc("Z")
        Debug.Print Chr(i)
    Next i
    '■AA~ZZまでを自動採番
    For i = Asc("A") To Asc("Z")
        For k = Asc("A") To Asc("Z")
            Debug.Print Chr(i) & Chr(k)
        Next k
    Next i
    
    '上記は
    '半角大文字文字の場合です。
    '半角小文字の場合はAsc("a") To Asc("z")
    '全角小文字の場合はAsc("a") To Asc("z")
    '全角大文字の場合はAsc("A") To Asc("Z")
    'に書き換えてください。
    
End Sub

その他

実際にはaa~zzをセルに書き込む場合がほとんどかと思います。
下記のようなパーツを作成していますのでお使いください。

Public Sub call_AtoZZ(rng As Range, flg As Long)
    Dim i As Long, k As Long
    Dim chk As Long: chk = 1
    Dim sRow As Long: sRow = rng.Row
    
    '■セルにa~zまで値を入れる
    For i = Asc("a") To Asc("z")
        Cells(sRow, rng.Column) = Chr(i)
        
        '■指定された回数になれば本関数から抜ける
        If chk = flg Then Exit Sub
        sRow = sRow + 1
        chk = chk + 1
    Next i
    '■flgを満たさなければ続けて、セルにaa~zzまで値を入れる
    For i = Asc("A") To Asc("Z")
        For k = Asc("A") To Asc("Z")
            Debug.Print Chr(i) & Chr(k)
        Next k
        '■指定された回数になれば本関数から抜ける
        If chk = flg Then Exit Sub
        sRow = sRow + 1
        chk = chk + 1
    Next i
    
End Sub

実際の使い方

Public Sub sample()
    '■セルA1からaから採番し、30個目の文字を採番すれば、採番終了する
    Call call_AtoZZ(Range("A1"), 30)

    'セルA1→a
    'セルA2→b
    'セルA3→c
    'セルA4→d
    'セルA5→e
    '・
    '・
    '・
    'セルA26→z
    'セルA27→aa
    'セルA28→ab
    'セルA29→ac
    'セルA30→ad
End Sub

関連記事

コメント

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