Private Sub Command1_Click() MsgBox Test End Sub Public Function Test() As String Const Tables As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" Randomize Dim I As Long Dim tmp As String For I = 1 To 10 tmp = tmp & CStr(Mid(Tables, Int(Rnd * 25) + 1, 1)) Next Test = tmp End Function
Private Sub Command1_Click() MsgBox Test End SubPublic Function Test() As String Randomize Dim I As Long Dim tmp As String For I = 1 To 10 tmp = tmp & Chr(Int(Rnd * 25) + 65) Next Test = tmp End Function
把循环的长度改一下不就行了么。另外,Rnd * 25 不对吧。Int(Rnd * 25)只能产生 0 - 24的随机整数,这样就没有字母Z了。 For I = 0 To Int(Rnd * 10) tmp = tmp & Chr(Int(Rnd * 26) + 65) Next
Private Sub Command1_Click() MsgBox Test End SubPublic Function Test() As String Randomize Dim I,j As Long Dim tmp As String j=(rnd*10) For I = 1 To j tmp = tmp & Chr(Int(Rnd * 25) + 65) Next Test = tmp End Function 这样就可以了
Private Sub Command1_Click() '参数是输出的字符串长度 MsgBox Test(10) End SubPublic Function Test(ByVal Bits As Integer) As String Randomize Dim I As Long Dim tmp As String For I = 1 To Bits tmp = tmp & Chr(Int(Rnd * 25) + 65) Next Test = tmp End Function
'回复人: Cooly(☆给我一个开心的理由!☆) '修改 Private Sub Command1_Click() MsgBox Test End SubPublic Function Test() As String Dim I As Long Dim tmp As String Randomize Timer For I = 1 To Int(Rnd * 10) + 1 tmp = tmp & Chr(Int(Rnd * 25) + 65) Next Test = tmp End Function
TO eports(飘零风) : 你说得对,我的失误,不好意思。:)TO All:修订Private Sub Command1_Click() '参数是输出的字符串长度 MsgBox Test(10) End SubPublic Function Test(ByVal Bits As Integer) As String Randomize Dim I As Long Dim tmp As String For I = 1 To Bits tmp = tmp & Chr(Int(Rnd * 26) + 65) Next Test = tmp End Function
回复人: eports(飘零风) 说的很好 好久没动vb了:('回复人: Cooly(☆给我一个开心的理由!☆) '再修改 Private Sub Command1_Click() MsgBox Test End SubPublic Function Test() As String Dim I As Long Dim tmp As String Randomize Timer For I = 0 To Int(Rnd * 10) tmp = tmp & Chr(Int(Rnd * 26) + 65) Next Test = tmp End Function
呵呵,简单 Private Sub Command1_Click() Dim I As Long Dim tmp As String For I = 1 To 10 tmp = tmp & Chr(Int(26 * Rnd + 65)) Next End Sub msgbox tmp End Sub
我照着做的,在我的机器上怎么总提示CHR那,找不到工程或库,用MID也是的。这是怎么回事。
TO llse1() : 可能是你的工程库有问题。试试下面的代码Private Sub Command1_Click() '参数是输出的字符串长度 MsgBox Test(10) End SubPublic Function Test(ByVal Bits As Integer) As String VBA.Randomize Dim I As Long Dim tmp As String For I = 1 To Bits tmp = tmp & VBA.Chr(VBA.Int(VBA.Rnd * 26) + 65) Next Test = tmp End Function
要引用VBA库。 楼主不觉得我的方法是最简单的吗?哈哈。
>rnd产生的随机数不是数字吗,我要的是字母啊'模块名称:mdlRandom '模块功能:产生随机的字符串 '作者:[email protected] '更新日期:2003-7-25 3:55:42 PM '相关模块:mdlUtilities, '相关文件: '预期读者和阅读建议: '国外一共享软件,功能是产生一些随机数。据然能够卖到美元 '我承认我会写代码,但是不会赚美元。 '用这个模块你搞一个 ' Password Generator Professional ' Random String Cenerator Professional '赚到钱记得分我一点。 1%就OK。 '使用方法: 'strMatrix ="abcdefghijkl" '不要重复,这是你的串中能够包含的字符 'lngLen = 10 '你要随机选几个字符 'dim strOut '保存结果 'dim blnAllowRepeat '是否允许重复 'blnAllowRepeat=True ' CreateRandomString strMatrix,lngLen , strOut,blnAllowRepeat '******************************************** Public Function CreateRandomString( _ ByVal strMatrix As String, _ ByVal lngLen As Long, _ strOut As String, _ Optional BlnAllowRepeat As Boolean = False) '目的 :在给定的串中,随机选择一个字符,组成指定长度的串。 '相关模块: RandomNumber,CreateRandomByteArray '输入: '返回:如果操作成功完成,返回0,否则返回Err.Number On Error GoTo PROC_ERR Dim lngErr As Long '[参数有效性检测] Dim lngLenMatrix As Long lngLenMatrix = Len(strMatrix) If lngLenMatrix = 0 Or lngLen < 1 Then lngErr = -1 Debug.Print "CreateRandomString. Matrix is Empty or lngLen <1" GoTo PROC_EXIT End If '*************** Dim strTemp As String Dim strOneRandom As String Dim lngLoop As Long Dim lngRandomPosition As Long Dim abytRandom() As Byte '*************** If BlnAllowRepeat Then '*************** '*允许重复 For lngLoop = 1 To lngLen '*关键外部调用:mdlUtilities.RandomNumber '随机选择一个位置 lngRandomPosition = RandomNumber(1, lngLenMatrix) '得到随机位置的字符 strOneRandom = Mid(strMatrix, lngRandomPosition, 1) '连接得到的随的字符 strTemp = strTemp & strOneRandom Next
Else '*************** '*不允许重复 '*关键外部调用:CreateRandomByteArray CreateRandomByteArray abytRandom, lngLenMatrix - 1 Dim lngCount As Long '*************** For lngLoop = 0 To lngLenMatrix - 1 '*关键外部调用:mdlUtilities.RandomNumber '得到一个位置 lngRandomPosition = abytRandom(lngLoop) '得到这个位置的字符 strOneRandom = Mid(strMatrix, lngRandomPosition + 1, 1) '连接得到的字符 strTemp = strTemp & strOneRandom '记数器加1 lngCount = lngCount + 1 If lngCount >= lngLen Then Exit For End If
Next
End If '*************** '*************** '*返回结果 strOut = strTempPROC_EXIT: CreateRandomString = lngErrExit Function PROC_ERR: lngErr = Err.Number strOut = "" Debug.Print "CreateRandomString.Err(" & Err.Number & "):" & Err.Description & " Erl:" & Erl GoTo PROC_EXITEnd Function'*********************************************************** Public Function CreateRandomByteArray(abytArray, Optional lngSize As Long = 255) As Long '目的 :产生一个随机的Byte数组 '相关模块: '输入:abytArray -保存结果 ' lngSize -这个数组的上界(*注意:下界为0) '返回:如果操作成功完成,返回0,否则返回Err.Number On Error GoTo PROC_ERR Dim lngErr As Long '建立一个临时Byte数组 Dim lngLoop As Long Dim abytTemp() As Byte ReDim abytTemp(lngSize) '*************** '*填充这个数组 For lngLoop = 1 To lngSize abytTemp(lngLoop) = lngLoop Next '*************** '*对已经填充的数组,通过随机的交换两个元素的位置来打乱 Dim lngRandom Dim vntTemp For lngLoop = 0 To lngSize lngRandom = RandomNumber(0, lngSize) ' Debug.Print "Random:" & lngRandom vntTemp = abytTemp(lngLoop) abytTemp(lngLoop) = abytTemp(lngRandom) abytTemp(lngRandom) = vntTemp
Next '*************** '*返回结果 abytArray = abytTemp PROC_EXIT: CreateRandomByteArray = lngErr Exit Function PROC_ERR: lngErr = Err.Number Debug.Print "CreateRandomByteArray.Err(" & Err.Number & "):" & Err.Description GoTo PROC_EXITEnd Function '*********************************************************** Public Function RandomNumber(LowerBound, UpperBound) 'Purpose :产生一个指定范围内的随机数 On Error Resume Next Randomize RandomNumber = Int((UpperBound - LowerBound + 1) * Rnd + LowerBound) End Function '*********************************************************** '*********************************************************** '*希望能够对你有所帮助! '*********************************************************** '******************************************** '对不起,放一点广告,对您带来的不便敬请原谅! 广告:我的第一个Visual Basic 6.0作品,欢迎大家试用,注册用户得到全部源代码。一、EasyDialog能够做什么? (为了增强Windows通用打开/保存对话框,能够快速的打开经常访问的文件夹或者文件) 一、快速地在通用打开/保存对话框中打开你经常访问的文件夹/文件。 二、快速地在Windows Explorer中打开经常访问的文件夹/文件。 三、快速地在IE浏览器打开你经常访问的网站。 四、快速地给你的朋友发Email 五、能够使您方便地按照逻辑分类来组织和管理您的文件夹/文件,您经常访问的网址,您的Email地址。'******************************************** '*下载EasyDialog: http://www.softboyzhou.com/download/EasyDialog.asp '*************** '*购买EasyDialog: http://www.softreg.com.cn/shareware_view.asp?id=/7148D197-1C1D-4E84-B92A-EE2CC07D27C0/ '*************** '*给我写信:有什么问题请来信。 [email protected]
MsgBox Test
End Sub
Public Function Test() As String
Const Tables As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Randomize
Dim I As Long
Dim tmp As String
For I = 1 To 10
tmp = tmp & CStr(Mid(Tables, Int(Rnd * 25) + 1, 1))
Next
Test = tmp
End Function
MsgBox Test
End SubPublic Function Test() As String
Randomize
Dim I As Long
Dim tmp As String
For I = 1 To 10
tmp = tmp & Chr(Int(Rnd * 25) + 65)
Next
Test = tmp
End Function
tmp = tmp & Chr(Int(Rnd * 26) + 65)
Next
MsgBox Test
End SubPublic Function Test() As String
Randomize
Dim I,j As Long
Dim tmp As String
j=(rnd*10)
For I = 1 To j
tmp = tmp & Chr(Int(Rnd * 25) + 65)
Next
Test = tmp
End Function
这样就可以了
'参数是输出的字符串长度
MsgBox Test(10)
End SubPublic Function Test(ByVal Bits As Integer) As String
Randomize
Dim I As Long
Dim tmp As String
For I = 1 To Bits
tmp = tmp & Chr(Int(Rnd * 25) + 65)
Next
Test = tmp
End Function
print "FHDKHF"
print "fdafdaf"
print "aaffffrer"
print "ruewfjke"
...哈哈。
'修改
Private Sub Command1_Click()
MsgBox Test
End SubPublic Function Test() As String
Dim I As Long
Dim tmp As String
Randomize Timer
For I = 1 To Int(Rnd * 10) + 1
tmp = tmp & Chr(Int(Rnd * 25) + 65)
Next
Test = tmp
End Function
print "FHDKHF"
print "fdafdaf"
print "aaffffrer"
print "ruewfjke"
...哈哈。
你说得对,我的失误,不好意思。:)TO All:修订Private Sub Command1_Click()
'参数是输出的字符串长度
MsgBox Test(10)
End SubPublic Function Test(ByVal Bits As Integer) As String
Randomize
Dim I As Long
Dim tmp As String
For I = 1 To Bits
tmp = tmp & Chr(Int(Rnd * 26) + 65)
Next
Test = tmp
End Function
好久没动vb了:('回复人: Cooly(☆给我一个开心的理由!☆)
'再修改
Private Sub Command1_Click()
MsgBox Test
End SubPublic Function Test() As String
Dim I As Long
Dim tmp As String
Randomize Timer
For I = 0 To Int(Rnd * 10)
tmp = tmp & Chr(Int(Rnd * 26) + 65)
Next
Test = tmp
End Function
这位llse1 (),我想问一下,以前没有编过程?够懒!佩服!既然知道能rnd产生随机数,为什么自己不产生一个呢?
Private Sub Command1_Click()
Dim I As Long
Dim tmp As String
For I = 1 To 10
tmp = tmp & Chr(Int(26 * Rnd + 65))
Next
End Sub
msgbox tmp
End Sub
可能是你的工程库有问题。试试下面的代码Private Sub Command1_Click()
'参数是输出的字符串长度
MsgBox Test(10)
End SubPublic Function Test(ByVal Bits As Integer) As String
VBA.Randomize
Dim I As Long
Dim tmp As String
For I = 1 To Bits
tmp = tmp & VBA.Chr(VBA.Int(VBA.Rnd * 26) + 65)
Next
Test = tmp
End Function
楼主不觉得我的方法是最简单的吗?哈哈。
'模块功能:产生随机的字符串
'作者:[email protected]
'更新日期:2003-7-25 3:55:42 PM
'相关模块:mdlUtilities,
'相关文件:
'预期读者和阅读建议:
'国外一共享软件,功能是产生一些随机数。据然能够卖到美元
'我承认我会写代码,但是不会赚美元。
'用这个模块你搞一个
' Password Generator Professional
' Random String Cenerator Professional
'赚到钱记得分我一点。 1%就OK。
'使用方法:
'strMatrix ="abcdefghijkl" '不要重复,这是你的串中能够包含的字符
'lngLen = 10 '你要随机选几个字符
'dim strOut '保存结果
'dim blnAllowRepeat '是否允许重复
'blnAllowRepeat=True
' CreateRandomString strMatrix,lngLen , strOut,blnAllowRepeat
'********************************************
Public Function CreateRandomString( _
ByVal strMatrix As String, _
ByVal lngLen As Long, _
strOut As String, _
Optional BlnAllowRepeat As Boolean = False)
'目的 :在给定的串中,随机选择一个字符,组成指定长度的串。
'相关模块: RandomNumber,CreateRandomByteArray
'输入:
'返回:如果操作成功完成,返回0,否则返回Err.Number
On Error GoTo PROC_ERR
Dim lngErr As Long
'[参数有效性检测]
Dim lngLenMatrix As Long
lngLenMatrix = Len(strMatrix)
If lngLenMatrix = 0 Or lngLen < 1 Then
lngErr = -1
Debug.Print "CreateRandomString. Matrix is Empty or lngLen <1"
GoTo PROC_EXIT
End If
'***************
Dim strTemp As String
Dim strOneRandom As String
Dim lngLoop As Long
Dim lngRandomPosition As Long
Dim abytRandom() As Byte
'***************
If BlnAllowRepeat Then
'***************
'*允许重复
For lngLoop = 1 To lngLen
'*关键外部调用:mdlUtilities.RandomNumber
'随机选择一个位置
lngRandomPosition = RandomNumber(1, lngLenMatrix)
'得到随机位置的字符
strOneRandom = Mid(strMatrix, lngRandomPosition, 1)
'连接得到的随的字符
strTemp = strTemp & strOneRandom
Next
Else
'***************
'*不允许重复
'*关键外部调用:CreateRandomByteArray
CreateRandomByteArray abytRandom, lngLenMatrix - 1
Dim lngCount As Long
'***************
For lngLoop = 0 To lngLenMatrix - 1
'*关键外部调用:mdlUtilities.RandomNumber
'得到一个位置
lngRandomPosition = abytRandom(lngLoop)
'得到这个位置的字符
strOneRandom = Mid(strMatrix, lngRandomPosition + 1, 1)
'连接得到的字符
strTemp = strTemp & strOneRandom
'记数器加1
lngCount = lngCount + 1
If lngCount >= lngLen Then
Exit For
End If
Next
End If
'***************
'***************
'*返回结果
strOut = strTempPROC_EXIT:
CreateRandomString = lngErrExit Function
PROC_ERR:
lngErr = Err.Number
strOut = ""
Debug.Print "CreateRandomString.Err(" & Err.Number & "):" & Err.Description & " Erl:" & Erl
GoTo PROC_EXITEnd Function'***********************************************************
Public Function CreateRandomByteArray(abytArray, Optional lngSize As Long = 255) As Long
'目的 :产生一个随机的Byte数组
'相关模块:
'输入:abytArray -保存结果
' lngSize -这个数组的上界(*注意:下界为0)
'返回:如果操作成功完成,返回0,否则返回Err.Number
On Error GoTo PROC_ERR
Dim lngErr As Long
'建立一个临时Byte数组
Dim lngLoop As Long
Dim abytTemp() As Byte
ReDim abytTemp(lngSize)
'***************
'*填充这个数组
For lngLoop = 1 To lngSize
abytTemp(lngLoop) = lngLoop
Next
'***************
'*对已经填充的数组,通过随机的交换两个元素的位置来打乱
Dim lngRandom
Dim vntTemp
For lngLoop = 0 To lngSize
lngRandom = RandomNumber(0, lngSize)
' Debug.Print "Random:" & lngRandom
vntTemp = abytTemp(lngLoop)
abytTemp(lngLoop) = abytTemp(lngRandom)
abytTemp(lngRandom) = vntTemp
Next
'***************
'*返回结果
abytArray = abytTemp
PROC_EXIT:
CreateRandomByteArray = lngErr
Exit Function
PROC_ERR:
lngErr = Err.Number
Debug.Print "CreateRandomByteArray.Err(" & Err.Number & "):" & Err.Description
GoTo PROC_EXITEnd Function
'***********************************************************
Public Function RandomNumber(LowerBound, UpperBound)
'Purpose :产生一个指定范围内的随机数
On Error Resume Next
Randomize
RandomNumber = Int((UpperBound - LowerBound + 1) * Rnd + LowerBound)
End Function
'***********************************************************
'***********************************************************
'*希望能够对你有所帮助!
'***********************************************************
'********************************************
'对不起,放一点广告,对您带来的不便敬请原谅!
广告:我的第一个Visual Basic 6.0作品,欢迎大家试用,注册用户得到全部源代码。一、EasyDialog能够做什么?
(为了增强Windows通用打开/保存对话框,能够快速的打开经常访问的文件夹或者文件)
一、快速地在通用打开/保存对话框中打开你经常访问的文件夹/文件。
二、快速地在Windows Explorer中打开经常访问的文件夹/文件。
三、快速地在IE浏览器打开你经常访问的网站。
四、快速地给你的朋友发Email
五、能够使您方便地按照逻辑分类来组织和管理您的文件夹/文件,您经常访问的网址,您的Email地址。'********************************************
'*下载EasyDialog:
http://www.softboyzhou.com/download/EasyDialog.asp
'***************
'*购买EasyDialog:
http://www.softreg.com.cn/shareware_view.asp?id=/7148D197-1C1D-4E84-B92A-EE2CC07D27C0/
'***************
'*给我写信:有什么问题请来信。
[email protected]