Dim stemp() As Integer 定义数组Dim sIp() As String 定义数组Dim iHigt As Integer 定义变量On Error GoTo NumToIpErr 错误处理,当出现错误的时候到NumToIpErr继续执行代码ReDim stemp(3) 重新定义数组ReDim sIp(3) If Len(sSim) = 11 Then 判断sSim中字符的长度,如果sSim中有11个字符进行下面的代码stemp(0) = mid(sSim, 4, 2) 对数组进行赋值,这行的mid函数的意思是说从sSim中的第四个字符开始取2个字符赋值给stemp(0)stemp(1) = mid(sSim, 6, 2) stemp(2) = mid(sSim, 8, 2) stemp(3) = mid(sSim, 10, 2) iHigt = CInt(mid(sSim, 2, 2)) - 30 cint是类型转换,把里面的内容转换成整形ElseIf Len(sSim) = 10 Then 此处对应上面的IFstemp(0) = mid(sSim, 3, 2) stemp(1) = mid(sSim, 5, 2) stemp(2) = mid(sSim, 7, 2) stemp(3) = mid(sSim, 9, 2) iHigt = CInt(mid(sSim, 1, 2)) - 30 ElseIf Len(sSim) = 9 Then stemp(0) = mid(sSim, 2, 2) stemp(1) = mid(sSim, 4, 2) stemp(2) = mid(sSim, 6, 2) stemp(3) = mid(sSim, 8, 2) iHigt = mid(sSim, 1, 1) ElseIf Len(sSim) < 9 Then Select Case Len(sSim) 判断sSim的长度Case 8 如果是8个字节则在sSim前面加上字符串"140",下面类推sSim = "140" & sSim Case 7 sSim = "1400" & sSim Case 6 sSim = "14000" & sSim Case 5 sSim = "140000" & sSim Case 4 sSim = "1400000" & sSim Case 3 sSim = "14000000" & sSim Case 2 sSim = "140000000" & sSim Case 1 sSim = "1400000000" & sSim End Select stemp(0) = mid(sSim, 4, 2) stemp(1) = mid(sSim, 6, 2) stemp(2) = mid(sSim, 8, 2) stemp(3) = mid(sSim, 10, 2) iHigt = CInt(mid(sSim, 2, 2)) - 30 Else NewNumToIp = "" Exit Function End If '判断iHigt高位是否为1 若为1则将高位对应的数加&H80 If (iHigt And &H8) <> 0 Then sIp(0) = stemp(0) Or 128 Else sIp(0) = stemp(0) End If If (iHigt And &H4) <> 0 Then sIp(1) = stemp(1) Or 128 Else sIp(1) = stemp(1) End If If (iHigt And &H2) <> 0 Then sIp(2) = stemp(2) Or 128 Else sIp(2) = stemp(2) End If If (iHigt And &H1) <> 0 Then sIp(3) = stemp(3) Or 128 Else sIp(3) = stemp(3) End If NewNumToIp = sIp(0) & "." & sIp(1) & "." & sIp(2) & "." & sIp(3) 给NewNumToIp 赋值,NewNumToIp 的值被赋成了类似xx.xx.xx.xx的形式Exit Function NumToIpErr: 错误处理,对应开头的错误处理调用NewNumToIp = "" End Function