[VBA] 無作為なパスワードを返すユーザー定義関数

 小文字のアルファベットと 0 から 9 の数字を組合わせてランダムなパスワードを返す関数を作ってみましたよ。やっぱりパスワードはランダムなほうが安全なのね~。
 え? こばとがどんなパスワード使ってるかって?
 それはもちろん "kobatochan" ですよ~ ...... て、冗談に決まってるでしょ。

無作為なパスワードを返すユーザー定義関数

 まず簡単にマクロの構造を説明しておきましょ~。アルファベットは全部で 26 文字、0 から 9 の数字は全部で 10 文字なので、その比率は

26:10 = 13:5

となります。ですから、まず最初に 1 ~ 18 の乱数を発生させます。その数字によって次のように処理を分枝させます。

[1 ~ 5 の数字が出た場合]
 0 ~ 9 の乱数を発生させてパスワードの文字列に加えます。

[6 ~ 18 の数字が出た場合]
 97~122の乱数を発生させて、Chr 関数で対応するアルファベットに変換してパスワードの文字列に加えます。

 以上の処理を指定文字数ぶんだけ繰り返しますよ。

 'ランダムパスワード

 Function PASSWORD(n As Integer)

 Dim i As Integer
 Dim rd0 As Integer
 Dim rd1 As Integer
 Dim rd2 As Integer
 Dim myword As String

 Randomize

 For i = 1 To n

 '1~18の乱数を発生させます
 rd0 = Int(RND * 18 + 1)

 Select Case rd0

 Case 1 To 5

 '0~9の乱数を発生させます
 rd1 = Int(RND * 10)

 myword = myword & rd1

 Case Else

 '97~122の乱数を発生させます
 rd2 = Int(RND * 26 + 97)

 '乱数に対応したアルファベットを加えます
 myword = myword & Chr(rd2)

 End Select

 Next i

 PASSWORD = myword

 End Function

 この関数を使うときはパスワードの文字数を引数に指定して

=PASSWORD(文字数)

と入力してくださいな~。たとえば

=PASSWORD(8)

と入力すると "m1shtro3" みたいな 8 文字のランダムパスワードが返ってきます。今回のポイントとなるコードは

myword = myword & Chr(rd2)

という部分です。変数 rd2 には 97 ~ 122 の数字が入っているわけですが、Chr 関数でそれぞれの数字に対応する a ~ z のアルファベットに変換してパスワードの文字列に加えているのです。

 ≫ VBA 辞典メニューに戻って他の記事も読んでね~♪

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください