アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

ランダム文字列を生成する関数

お仕事で
「8文字のランダム文字列をいっぱい生成する」
という作業があったのでExcelVBAでマクロ組んで片付けました。

参考:VBAでランダムな文字列を生成する関数 - スイナシア
http://suin.asia/2008/12/15/vba-random-letters.html

…参考というか丸パクリです。
むしろ機能制限版です。

他にも「文字列の先頭は英字のみ」などの制限がありましたが
そちらは呼び出し元で制御していました。

' 引数:生成したい文字列の文字数
Private Function makeRandomString(Optional iLength As Integer = 8) As String

    ' 変数
    Dim sString As String '生成した文字列を放り込むやつ
    Dim sChars As String  '使用可能文字を放り込むやつ
    Dim i As Integer      'カウンタ変数

    '使用可能文字
    sChars = "abcdefghijklmnopqrstuvwxyz1234567890"

   ' 生成文字数分の回数、ランダムで文字を選びくっつける
    For i = 1 To iLength
        sString = Mid(sChars, Int(Len(sChars) * Rnd + 1), 1) & sString
    Next i

    makeRandomString = sString

End Function

ワークシートにきっちり表示するわけではなく、少数をささっと生成するだけならこういう感じで使ってます。

Public Sub main()
    Debug.Print makeRandomString()
End Sub