真っ先に思いついて書いたのは英数字の文字コードをランダムに出すもの(GenerateRndString)だが、なんかアホっぽい気がしたので英数字の文字列から文字をランダムに取り出す方にした(GenerateRndString2)。
お遊びコードです。あくまでも。
' ' Summary: ' 指定された長さでランダムな英数字の文字列を生成する ' Option Explicit Const TITLE = "ランダムな英数字文字列を生成するやつ" Dim size Do size = InputBox("生成する文字列の桁数ね", TITLE) If IsNumeric(size) Then size = CInt(size) Exit Do Else MsgBox "桁数だから数字で" End If Loop InputBox "こんな", TITLE, GenerateRndString2(size) ' ' Summary: ' 指定された長さでランダムな英数字の文字列を生成する ' Input: ' size As Integer - 生成する文字列の長さ ' Output: ' String - 生成した文字列 ' Function GenerateRndString(size) Dim str Dim n str = "" Randomize Do Until Len(str) >= size '数字または英字を生成する '"0"(048) ~ "9"(057) '"A"(065) ~ "Z"(090) '"a"(097) ~ "z"(122) n = Int((122 - 48 + 1) * Rnd + 48) If (48 <= n And n <= 57) _ Or (65 <= n And n <= 90) _ Or (97 <= n And n <= 122) Then str = str & Chr(n) End If Loop GenerateRndString = str End Function ' ' Summary: ' 指定された長さでランダムな英数字の文字列を生成する ' Input: ' size As Integer - 生成する文字列の長さ ' Output: ' String - 生成した文字列 ' Function GenerateRndString2(size) Dim chars Dim str Dim i chars = "0123456789" _ & "ABCDEFGHIJKLMNOPQRSTUVWXYZ" _ & "abcdefghijklmnopqrstuvwxyz" str = "" Randomize For i = 1 To size str = str & Mid(chars, Int(Rnd * Len(chars) + 1), 1) Next GenerateRndString2 = str End Function