Option Explicit'增加一个 按扭,一个 list1 列表框就行了, Private Sub Command1_Click() Dim Arr() As String Dim i As Long Arr = LoadData(20) '20选五
For i = 1 To UBound(Arr) List1.AddItem Arr(i) Next End SubPrivate Function LoadData(ByVal Num As Long) As String() Dim i As Long Dim j As Long Dim m As Long Dim n As Long Dim k As Long
Dim Data() As String Dim Count As Long
For i = 1 To Num - 4 For j = i + 1 To Num - 3 For m = j + 1 To Num - 2 For n = m + 1 To Num - 1 For k = n + 1 To Num Count = Count + 1 ReDim Preserve Data(Count) As String Data(Count) = Format(i, "00") & "," & Format(j, "00") & "," & Format(m, "00") & "," & Format(n, "00") & "," & Format(k, "00") Next Next Next Next Next LoadData = Data End Function
你可以在VB里测试一下 新建个EXE工程,在窗口里放置一个CommandBox按钮和一个TextBox控件 将TextBox控件的MultiLine属性设置为True,运行看看Private Sub Command1_Click() Dim X As Currency, ForCount As Currency, InitializeCount As Currency Dim StringCodeing(99) As String, StringInfo As String For X = 0 To 99 StringCodeing(X) = X Next X '这是运算需要循环的总数 'ForCount = 99 * (100 ^ 4) + 99 * (100 ^ 3) + 99 * (100 ^ 2) + 99 * 100 + 99
For X = InitializeCount To ForCount If X = InitializeCount Then StringInfo = AlgorismToString(X, StringCodeing, 5) Else StringInfo = StringInfo & vbCrLf & AlgorismToString(X, StringCodeing, 5) End If Next X Text1.Text = StringInfo End Sub'十进制到任意进制的转换 Public Function AlgorismToString(Algorism As Currency, StrCodeing() As String, BitCount As Long) As String Dim X As Currency, BasicCount As Currency, BasicCountSave As Currency, StrCount As Currency, OneBitCount As Long StrCount = UBound(StrCodeing) + 1 AlgorismToString = "" BasicCount = Int(Algorism / StrCount) If BasicCount >= StrCount Then OneBitCount = StrCodeing(Algorism Mod StrCount) AlgorismToString = String((Len(CStr(StrCount)) - 1) - Len(CStr(OneBitCount)), StrCodeing(0)) & OneBitCount Do OneBitCount = StrCodeing(BasicCount Mod StrCount) AlgorismToString = String((Len(CStr(StrCount)) - 1) - Len(CStr(OneBitCount)), StrCodeing(0)) & OneBitCount & AlgorismToString BasicCountSave = BasicCount BasicCount = Int(BasicCount / StrCount) Loop While BasicCount > (StrCount - 1) AlgorismToString = StrCodeing(Int(BasicCountSave / StrCount)) & AlgorismToString Else AlgorismToString = StrCodeing(BasicCount) & StrCodeing(Algorism Mod StrCount) End If AlgorismToString = String((BitCount * (Len(CStr(StrCount)) - 1)) - Len(AlgorismToString), StrCodeing(0)) & AlgorismToString End Function'任意进制到十进制的转换 Public Function StrToAlgorism(StrInfo As String, StrCodeing() As String) As Currency Dim X As Currency, Y As Currency, TempString As String, CountBitLen As Long Dim NowCodeingCount As Currency, StrCount As Currency, BitCount As Long, NowBitCount As Long Dim OneBitCount As Long NowBitCount = 0 StrCount = UBound(StrCodeing) + 1 BitCount = Len(StrCodeing(UBound(StrCodeing))) CountBitLen = Len(StrInfo) / BitCount For X = 1 To Len(StrInfo) Step BitCount NowBitCount = NowBitCount + 1 TempString = Mid(StrInfo, X, BitCount) For Y = 1 To BitCount If Mid(TempString, Y, 1) <> StrCodeing(0) Then Exit For End If Next Y TempString = Right(TempString, BitCount - (Y - 1)) For Y = 0 To (StrCount - 1) If TempString = StrCodeing(Y) Then NowCodeingCount = Y Exit For End If Next Y OneBitCount = NowCodeingCount * (StrCount ^ (CountBitLen - NowBitCount)) StrToAlgorism = StrToAlgorism + OneBitCount Next X End Function 这个程序主要是将你的需求用进制运算来解决的 因为你提供的数据是 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 其中出现的都是两位数字所组成,所以范围应该在 00-99 之间,即逢100进1,就是100进制了 按这个思路进行运算。 5位的100进制数的递增循环,这就是上面程序的大概意思
要用的对象是listview 要指出要复式的具体数据用文本框来指定。
Option Explicit'增加一个 按扭,一个 list1 列表框就行了,
Private Sub Command1_Click()
Dim Arr() As String
Dim i As Long
Arr = LoadData(20) '20选五
For i = 1 To UBound(Arr)
List1.AddItem Arr(i)
Next
End SubPrivate Function LoadData(ByVal Num As Long) As String()
Dim i As Long
Dim j As Long
Dim m As Long
Dim n As Long
Dim k As Long
Dim Data() As String
Dim Count As Long
For i = 1 To Num - 4
For j = i + 1 To Num - 3
For m = j + 1 To Num - 2
For n = m + 1 To Num - 1
For k = n + 1 To Num
Count = Count + 1
ReDim Preserve Data(Count) As String
Data(Count) = Format(i, "00") & "," & Format(j, "00") & "," & Format(m, "00") & "," & Format(n, "00") & "," & Format(k, "00") Next
Next
Next
Next
Next
LoadData = Data
End Function
新建个EXE工程,在窗口里放置一个CommandBox按钮和一个TextBox控件
将TextBox控件的MultiLine属性设置为True,运行看看Private Sub Command1_Click()
Dim X As Currency, ForCount As Currency, InitializeCount As Currency
Dim StringCodeing(99) As String, StringInfo As String
For X = 0 To 99
StringCodeing(X) = X
Next X
'这是运算需要循环的总数
'ForCount = 99 * (100 ^ 4) + 99 * (100 ^ 3) + 99 * (100 ^ 2) + 99 * 100 + 99
'初始化循环的开始位置
InitializeCount = StrToAlgorism("0102030405", StringCodeing)
'设置循环的结束位置
ForCount = StrToAlgorism("0102030419", StringCodeing)
For X = InitializeCount To ForCount
If X = InitializeCount Then
StringInfo = AlgorismToString(X, StringCodeing, 5)
Else
StringInfo = StringInfo & vbCrLf & AlgorismToString(X, StringCodeing, 5)
End If
Next X
Text1.Text = StringInfo
End Sub'十进制到任意进制的转换
Public Function AlgorismToString(Algorism As Currency, StrCodeing() As String, BitCount As Long) As String
Dim X As Currency, BasicCount As Currency, BasicCountSave As Currency, StrCount As Currency, OneBitCount As Long
StrCount = UBound(StrCodeing) + 1
AlgorismToString = ""
BasicCount = Int(Algorism / StrCount)
If BasicCount >= StrCount Then
OneBitCount = StrCodeing(Algorism Mod StrCount)
AlgorismToString = String((Len(CStr(StrCount)) - 1) - Len(CStr(OneBitCount)), StrCodeing(0)) & OneBitCount
Do
OneBitCount = StrCodeing(BasicCount Mod StrCount)
AlgorismToString = String((Len(CStr(StrCount)) - 1) - Len(CStr(OneBitCount)), StrCodeing(0)) & OneBitCount & AlgorismToString
BasicCountSave = BasicCount
BasicCount = Int(BasicCount / StrCount)
Loop While BasicCount > (StrCount - 1)
AlgorismToString = StrCodeing(Int(BasicCountSave / StrCount)) & AlgorismToString
Else
AlgorismToString = StrCodeing(BasicCount) & StrCodeing(Algorism Mod StrCount)
End If
AlgorismToString = String((BitCount * (Len(CStr(StrCount)) - 1)) - Len(AlgorismToString), StrCodeing(0)) & AlgorismToString
End Function'任意进制到十进制的转换
Public Function StrToAlgorism(StrInfo As String, StrCodeing() As String) As Currency
Dim X As Currency, Y As Currency, TempString As String, CountBitLen As Long
Dim NowCodeingCount As Currency, StrCount As Currency, BitCount As Long, NowBitCount As Long
Dim OneBitCount As Long
NowBitCount = 0
StrCount = UBound(StrCodeing) + 1
BitCount = Len(StrCodeing(UBound(StrCodeing)))
CountBitLen = Len(StrInfo) / BitCount
For X = 1 To Len(StrInfo) Step BitCount
NowBitCount = NowBitCount + 1
TempString = Mid(StrInfo, X, BitCount)
For Y = 1 To BitCount
If Mid(TempString, Y, 1) <> StrCodeing(0) Then
Exit For
End If
Next Y
TempString = Right(TempString, BitCount - (Y - 1))
For Y = 0 To (StrCount - 1)
If TempString = StrCodeing(Y) Then
NowCodeingCount = Y
Exit For
End If
Next Y
OneBitCount = NowCodeingCount * (StrCount ^ (CountBitLen - NowBitCount))
StrToAlgorism = StrToAlgorism + OneBitCount
Next X
End Function
这个程序主要是将你的需求用进制运算来解决的
因为你提供的数据是
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18
其中出现的都是两位数字所组成,所以范围应该在 00-99 之间,即逢100进1,就是100进制了
按这个思路进行运算。
5位的100进制数的递增循环,这就是上面程序的大概意思