小弟初学vb,想写一个简单的7位密码生成器
要求是这样的:
1~3 字母(小写)4~5 数字(0~9)6~7 字母、数字混合前面5位我知道如何做,但后2位要在字母和数字之间随机,实在不知道如何实现,贴上我写的,希望大虾指点指点Private Sub Command1_Click()
Dim x As String
Dim y As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As IntegerFor i = 1 To 3
Do
y = Int(Rnd(i) * 26 + 97)
Loop Until y <> 123
x = x & Chr(y)
Next iFor j = 1 To 2
Do
y = Int(Rnd(j) * 10 + 48)
Loop Until y <> 59
x = x & Chr(y)
Next jFor k = 1 To 1
Do
y = Int(Rnd(k) * 26 + 97)
Loop Until y <> 123
x = x & Chr(y)
Next kFor l = 1 To 1
Do
y = Int(Rnd(l) * 10 + 48)
Loop Until y <> 59
x = x & Chr(y)
Next lText1.Text = x
End Sub

解决方案 »

  1.   

    一个土方法,把0~9,A~Z分别定到数组里头,再随机一个下标,就可以啦!Dim StrRnd(35) as StringStrRnd(0)="0"
    StrRnd(1)="1"
    StrRnd(2)="2"
    StrRnd(3)="3"
    .........
    StrRnd(35)="Z"再
    msgbox StrRnd(rnd*36)明白不?
      

  2.   

    Private Sub Command1_Click()
        Dim x As String, y As Integer, i As Integer
        Randomize
        For i = 1 To 7
            If i < 4 Then
                y = 1
            ElseIf i < 6 Then
                y = 0
            Else
                y = Int(Rnd * 2)
            End If
            If y = 0 Then
                x = x & Chr$(Int(Rnd * 10) + 48)
            Else
                x = x & Chr$(Int(Rnd * 26) + 97)
            End If
        Next
        Text1.Text = x
    End Sub
      

  3.   

    我先试了2楼的方法,但会出现实时错误9,下标越界,怎么回事呢?Private Sub Command1_Click()
    Dim x As String
    Dim y As Integer
    Dim i As Integer
    Dim j As Integer
    Dim StrRnd(35) As StringFor i = 1 To 3
    Do
    y = Int(Rnd(i) * 26 + 97)
    Loop Until y <> 123
    x = x & Chr(y)
    Next iFor j = 1 To 2
    Do
    y = Int(Rnd(j) * 10 + 48)
    Loop Until y <> 59
    x = x & Chr(y)
    Next jStrRnd(0) = "0"
    StrRnd(1) = "1"
    StrRnd(2) = "2"
    StrRnd(3) = "3"
    StrRnd(4) = "4"
    StrRnd(5) = "5"
    StrRnd(6) = "6"
    StrRnd(7) = "7"
    StrRnd(8) = "8"
    StrRnd(9) = "9"
    StrRnd(10) = "a"
    StrRnd(11) = "b"
    StrRnd(12) = "c"
    StrRnd(13) = "d"
    StrRnd(14) = "e"
    StrRnd(15) = "f"
    StrRnd(16) = "g"
    StrRnd(17) = "h"
    StrRnd(18) = "i"
    StrRnd(19) = "j"
    StrRnd(20) = "k"
    StrRnd(21) = "l"
    StrRnd(22) = "m"
    StrRnd(23) = "n"
    StrRnd(24) = "o"
    StrRnd(25) = "p"
    StrRnd(26) = "q"
    StrRnd(27) = "r"
    StrRnd(28) = "s"
    StrRnd(29) = "t"
    StrRnd(30) = "u"
    StrRnd(31) = "v"
    StrRnd(32) = "w"
    StrRnd(33) = "x"
    StrRnd(34) = "y"
    StrRnd(35) = "z"Text1.Text = x + StrRnd(Rnd * 36) + StrRnd(Rnd * 36)End Sub
      

  4.   

    Text1.Text = x + StrRnd((Rnd * 1000)  mod 36) + ((Rnd * 1000)  mod 36)
      

  5.   

    两位小写字母跟数字的随机组合:
    Private Sub Command2_Click()
    Randomize
    Dim a As String
    Dim b As Integer
    For i = 1 To 2
    b = Int(36 * Rnd + 1)
    If b <= 10 Then
    a = a + Trim(Str(Chr(b + 47)))
    Else
    a = a + Chr(b + 86)
    End If
    Next
    Debug.Print a
    End Sub