如何将下面程序改成由自己输入10个ip后再汇总,要怎么改?
Option ExplicitSub Main()
Dim aIP(3) As String
Dim aBin(3) As String
Dim i As Long
Dim j As Long
aIP(0) = "172.168.4.1/24"
aIP(1) = "172.168.5.1/24"
aIP(2) = "172.168.6.1/24"
aIP(3) = "172.168.7.1/24"
For i = 0 To 3
aBin(i) = IP2Bin(aIP(i))
Debug.Print aIP(i), aBin(i), Bin2IP(aBin(i))
Next
For j = 1 To Len(aBin(0))
For i = 1 To 3
If Mid$(aBin(i), j, 1) <> Mid$(aBin(0), j, 1) Then GoTo FoundDiff
Next
Next
FoundDiff:
Debug.Print Bin2IP(Left$(aBin(i), j - 1))
End SubPublic Function IP2Bin(ByVal IP As String) As String
Dim a() As String
Dim lBits As Long
Dim s As String
Dim i As Long
a = Split(IP & "/24", "/")
lBits = a(1)
a = Split(a(0), ".")
For i = 0 To 3
s = s & Byte2Bin(CByte(a(i)))
Next
IP2Bin = Left$(s, lBits)
End FunctionPublic Function Bin2IP(ByVal Bin As String) As String
Dim lBits As Long
Dim s As String
Dim i As Long
lBits = Len(Bin)
If lBits < 24 Then
Bin = Bin & String(24 - lBits, "0")
End If
For i = 0 To 3
s = s & IIf(i > 0, ".", vbNullString) & Bin2Byte(Mid$(Bin, i * 8 + 1, 8))
Next
Bin2IP = s & "/" & lBits
End FunctionPublic Function Byte2Bin(ByVal n As Byte) As String
Dim s As String
Dim nMask As Byte
Dim i As Long
s = String$(8, "0")
nMask = &H80
For i = 1 To 8
If (n And nMask) <> 0 Then
Mid$(s, i, 1) = "1"
End If
nMask = nMask \ 2
Next
Byte2Bin = s
End FunctionPublic Function Bin2Byte(ByVal Bin As String) As Byte
Dim n As Byte
Dim nMask As Byte
Dim i As Long
nMask = &H80
For i = 1 To 8
If Mid$(Bin, i, 1) = "1" Then
n = n Or nMask
End If
nMask = nMask \ 2
Next
Bin2Byte = n
End Function
Option ExplicitSub Main()
Dim aIP(3) As String
Dim aBin(3) As String
Dim i As Long
Dim j As Long
aIP(0) = "172.168.4.1/24"
aIP(1) = "172.168.5.1/24"
aIP(2) = "172.168.6.1/24"
aIP(3) = "172.168.7.1/24"
For i = 0 To 3
aBin(i) = IP2Bin(aIP(i))
Debug.Print aIP(i), aBin(i), Bin2IP(aBin(i))
Next
For j = 1 To Len(aBin(0))
For i = 1 To 3
If Mid$(aBin(i), j, 1) <> Mid$(aBin(0), j, 1) Then GoTo FoundDiff
Next
Next
FoundDiff:
Debug.Print Bin2IP(Left$(aBin(i), j - 1))
End SubPublic Function IP2Bin(ByVal IP As String) As String
Dim a() As String
Dim lBits As Long
Dim s As String
Dim i As Long
a = Split(IP & "/24", "/")
lBits = a(1)
a = Split(a(0), ".")
For i = 0 To 3
s = s & Byte2Bin(CByte(a(i)))
Next
IP2Bin = Left$(s, lBits)
End FunctionPublic Function Bin2IP(ByVal Bin As String) As String
Dim lBits As Long
Dim s As String
Dim i As Long
lBits = Len(Bin)
If lBits < 24 Then
Bin = Bin & String(24 - lBits, "0")
End If
For i = 0 To 3
s = s & IIf(i > 0, ".", vbNullString) & Bin2Byte(Mid$(Bin, i * 8 + 1, 8))
Next
Bin2IP = s & "/" & lBits
End FunctionPublic Function Byte2Bin(ByVal n As Byte) As String
Dim s As String
Dim nMask As Byte
Dim i As Long
s = String$(8, "0")
nMask = &H80
For i = 1 To 8
If (n And nMask) <> 0 Then
Mid$(s, i, 1) = "1"
End If
nMask = nMask \ 2
Next
Byte2Bin = s
End FunctionPublic Function Bin2Byte(ByVal Bin As String) As Byte
Dim n As Byte
Dim nMask As Byte
Dim i As Long
nMask = &H80
For i = 1 To 8
If Mid$(Bin, i, 1) = "1" Then
n = n Or nMask
End If
nMask = nMask \ 2
Next
Bin2Byte = n
End Function
(2)写个录入10个IP的界面,把用户录入的IP存到数组aip里