回 帖 发 新 帖 刷新版面

主题:[讨论]代码优化的问题

我写了一个程序,其中有一段将数字转化为字母的代码:
 s = Int((10 * Rnd) + 1)
 Select Case s
 Case Is = 1
 p = "a"
 Case Is = 2
 p = "b"
 Case Is = 3
 p = "c"
 Case Is = 4
 p = "d"
 Case Is = 5
 p = "z"
 Case Is = 6
 p = "x"
 Case Is = 7
 p = "l"
 Case Is = 8
 p = "h"
 Case Is = 9
 p = "v"
 Case Is = 10
 p = "s"
 End Select


大意是将 字符p 随机替换为几个字母,原理是:先产生1个1~10之间的随机数,在用select函数挑出要替换的字母,但是如果一次性要替换的数字过多,会导致死机现象,怎样解决?

回复列表 (共2个回复)

沙发

Option Explicit

Private P(9) As String

Private Sub Form_Load()
Dim i As Integer, j As Integer, pNot As Boolean, pTemp As String
'随机生成一组不重复的字母
Randomize
    For i = 0 To 9
        pNot = True
        pTemp = Chr(65 + Int(Rnd() * 26))
        For j = 0 To i
            If P(j) = pTemp Then pNot = False
        Next
        If pNot Then
            P(i) = pTemp
        Else
            i = i - 1
        End If
    Next

'获取结果
    MsgBox "输入[1234567890],获得:" & GetKey(1234567890)
End Sub

Private Function GetKey(ByVal vS As String) As String
'简单的字母提取方式
Dim i As Integer
    For i = 1 To Len(CStr(vS))
        GetKey = GetKey & P(Mid(vS, i, 1))
    Next
End Function

板凳

多谢楼上的了

我来回复

您尚未登录,请登录后再回复。点此登录或注册