编写VB程序:生成6个不同的01到33的数,输出到文本框1中,输出01到16的一个数到文本框2中

代码哪点错了,为什么输出的都是一个0
Option Explicit
Private Sub Command1_Click()
Dim i As Integer, j As Integer, m As Integer, n As Integer
j = InputBox("生成数组", "福彩双色球", 1)
For i = 1 To j
Call sc(n, m)
Text1 = Text1 & n & vbCrLf
Text2 = Text2 & m & vbCrLf
Next i
End Sub

Private Sub sc(n As Integer, m As Integer)
Dim i As Integer, k As Integer, j As Integer
Dim a(6) As Integer, rs As Integer, b As Integer
For k = 1 To 6
a(k) = Int(Rnd * 33 + 1)
Next k
For i = 1 To 5
For j = i + 1 To 6
If a(i) = a(j) Then
Exit Sub
End If
Next j
Next i
For k = 1 To 6
If Len(CStr(a(k))) = 1 Then
rs = Right("0" & CStr(a(k)), 2)
End If
n = n & rs & " "
Next k
b = Int(Rnd * 16 + 1)
m = Right("0" & CStr(b), 2)
End Sub

Private Sub Command1_Click()
Dim i As Integer, j As Integer, m As String, n As String
    j = InputBox("生成数组", "福彩双色球", 1)
    For i = 1 To j
        Call SC(n, m)
        Text1 = Text1 & n & vbCrLf
        Text2 = Text2 & m & vbCrLf
    Next i
End Sub
Sub SC(n As String, m As String)
    Dim col As Collection
    Set col = New Collection
    Dim i As Integer
    For i = 1 To 33
        col.Add Format(i, "00")
    Next '把1到33加入集合中,以后每随机选取一个,就移除一个,这样号保证唯一性。
    Randomize
    Dim Text As String
    Dim Index As Integer
    For i = 1 To 6
        Index = Int(Rnd * col.Count + 1)
        Text = Text & " " & col.Item(Index)
        col.Remove Index
    Next
    Set col = Nothing
    m = Format(Int(Rnd * 16 + 1), "00")
    n = LTrim(Text)
End Sub

追问

谢谢,你能帮我把我写的代码改一下吗,我想知道自己是哪点错了,你的代码太深奥了,很多语句我都不知道是什么意思

追答Private Sub Command1_Click()
Dim i As Integer, j As Integer, m As String, n As String
    j = InputBox("生成数组", "福彩双色球", 1)
    For i = 1 To j
        Call sc(n, m)
        Text1 = Text1 & n & vbCrLf
        Text2 = Text2 & m & vbCrLf
    Next i
End Sub
Private Sub sc(n As String, m As String) '参数应为字符串类型
Dim i As Integer, k As Integer, j As Integer
Dim a(1 To 6) As Integer, rs As String, b As Integer 'rs应为字符串类型
Randomize 'rnd之前先初始一下
For k = 1 To 6
    a(k) = Int(Rnd * 33 + 1)
Next k
For i = 1 To 5
    For j = i + 1 To 6
        If a(i) = a(j) Then
        m = "--"
        n = "-------------------"
            Exit Sub  '如中途退出,返回空值,但也会在文本框显示一行
        End If
    Next j
Next i
m = ""
n = ""' 这两个变量保留了上次的数据,所以清空
For k = 1 To 6
   ' If Len(CStr(a(k))) = 1 Then '条件句不必要
        rs = Right("0" & CStr(a(k)), 2)
   ' End If
    n = n & rs & " "
Next k
b = Int(Rnd * 16 + 1)
'm = Right("0" & CStr(b), 2)
m = Format(b, "00") '如果把个位数前面补0,用formant 就可以了。
End Sub

温馨提示:答案为网友推荐,仅供参考
相似回答