真っ先に思いついて書いたのは英数字の文字コードをランダムに出すもの(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