変数 重複しない乱数取得
※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。
※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。
Private Sub 重複しない乱数取得() '************************************* '重複しない乱数取得 '英字を付加したい場合及び数値のみ対応 '数値の範囲指定可能 '任意作成数 '************************************* Dim RNDADD() As String '←出来た格納変数(グローバル変数へ) Dim 乱数最低値 As Long, 乱数最高値 As Long Dim 作成数 As Long Dim MyValue, a As Long, b As Long, i As Long 乱数最低値 = 1000000: 乱数最高値 = 9999999 作成数 = 10 '英字をつけない場合のエラー回避 If (乱数最高値 - 乱数最低値) + 1 < 作成数 Then MsgBox "作成範囲", 0, "ERROR" Exit Sub End If For a = 1 To 作成数 ReDim Preserve RNDADD(i) 再試行: MyValue = Int((乱数最高値 * Rnd) + 乱数最低値) '*英字を付加したい場合は↓を追加 MyValue = ランダム英字取得 & ランダム英字取得 & ランダム英字取得 & MyValue For b = LBound(RNDADD) To UBound(RNDADD) '作成済みと重複していたら If RNDADD(b) = MyValue Then GoTo 再試行: Next b RNDADD(i) = MyValue MsgBox RNDADD(i) '確認用MSG(削除) i = i + 1 Next a End Sub Private Function ランダム英字取得() As String '********************************************* 'ランダム英字取得関数 '********************************************* Dim MyValue, str(26) As String MyValue = Int((26 * Rnd) + 1) str(1) = "a": str(9) = "i": str(17) = "q": str(25) = "y" str(2) = "b": str(10) = "j": str(18) = "r": str(26) = "z" str(3) = "c": str(11) = "k": str(19) = "s" str(4) = "d": str(12) = "l": str(20) = "t" str(5) = "e": str(13) = "m": str(21) = "u" str(6) = "f": str(14) = "n": str(22) = "v" str(7) = "g": str(15) = "o": str(23) = "w" str(8) = "h": str(16) = "p": str(24) = "x" ランダム英字取得 = str(MyValue) End Function Private Sub test1() MsgBox ランダム英字取得 End Sub |