代码如下:
Private Sub Command1_Click()
Dim Str1, Str2, Str3, Str4 As String
Dim s1, s2, s3, s4 As Integer
s1 = InStr(Text1.Text, ".") '获取小数点的位置
If s1 = 0 Then
MsgBox "输入地址不合法!请从新输入"
Str1 = Left(Text1.Text, s1 - 1) '截取小数点前面的字符
If Int(Str1) > 255 Or Int(Str1) < 0 Then '把字符换成整型做比较
MsgBox "输入地址不合法!请从新输入"
Else
s2 = InStr(Right(Text1.Text, Len(Text1.Text) - s1), ".") '获取从上一个小数点后下一个小数点的位置
If s2 = 0 Then
MsgBox "输入地址不合法!请从新输入"
Str2 = Left(Right(Text1.Text, Len(Text1.Text) - s1), s2 - 1) '截取从上一个小数点后下一个小数点前的字符
If Int(Str2) > 255 Or Int(Str2) < 0 Then
MsgBox "输入地址不合法!请从新输入"
Else
s3 = InStr(Right(Text1.Text, Len(Text1.Text) - s1 - s2), ".")
If s3 = 0 Then
MsgBox "输入地址不合法!请从新输入"
Str3 = Left(Right(Text1.Text, Len(Text1.Text) - s1 - s2), s3 - 1)
If Int(Str3) > 255 Or Int(Str3) < 0 Then
MsgBox "输入地址不合法!请从新输入"
Else
s4 = InStr(Right(Text1.Text, Len(Text1.Text) - s1 - s2 - s3), ".")
If s4 = 0 Then
MsgBox "输入地址不合法!请从新输入"
Str4 = Left(Right(Text1.Text, Len(Text1.Text) - s1 - s2 - s3), s4 - 1)
If Int(Str4) > 255 Or Int(Str4) < 0 Then
MsgBox "输入地址不合法!请从新输入"
Else
MsgBox "输入的地址合法!"
End If
Else
MsgBox "输入地址不合法!请从新输入"
End If
End If
End If
End If
End Sub

解决方案 »

  1.   

    给你改了下
    Private Sub Command1_Click()
    Dim TmpA, i As Byte
    TmpA = Split(Text1.Text, ".")
    On Error GoTo ErrE
    If UBound(TmpA) <> 3 Then GoTo ErrE
    For i = 0 To 3
        If Int(TmpA(i)) > 255 Or Int(TmpA(i)) < 0 Then GoTo ErrE
    Next
    Exit Sub
    ErrE: MsgBox "输入地址不合法!请从新输入"
    End Sub
      

  2.   

    有那么复杂吗?Function ChkIp(ip As String) As Boolean
        Dim nrs() As String
        ChkIp = False
        If Len(Replace(ip, ".", "")) = (Len(ip) - 3) Then
            nrs = Split(ip, ".")
                If nrs(0) >= 256 Or nrs(1) >= 256 Or nrs(2) >= 256 Or nrs(3) >= 256 Then
                    ChkIp = False
                    Exit Function
                End If
        Else
            ChkIp = False
            Exit Function
        End If
        ChkIp = True
    End Function
      

  3.   

    Split(Text1.Text, ".")
    这个函数是什么意思我刚学。。
      

  4.   


    Split函数返回一个下标从零开始的一维数组,它包含指定数目的子字符串。语法Split(expression[, delimiter[, count[, compare]]])Split函数语法有如下几部分:部分 描述 
    expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。 
    delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。 
    count 可选的。要返回的子字符串数,–1表示返回所有的子字符串。 
    compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。 
    设置值compare参数的设置值如下:常数 值 描述 
    vbUseCompareOption –1 用Option Compare语句中的设置值执行比较。 
    vbBinaryCompare 0 执行二进制比较。 
    vbTextCompare 1 执行文字比较。 
    vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。 
      

  5.   


    Option ExplicitFunction CheckIP(pStr As String) As Boolean
      Dim tOutBool As Boolean
      Dim tStringNums() As String
      Dim tStringNums_Length As Long
      Dim tStringNums_Index As Long
      Dim tIPNum As Long
      
      tStringNums() = Split(pStr, ".")
      tStringNums_Length = UBound(tStringNums())
      
      tOutBool = tStringNums_Length = 3
      
      If tOutBool Then
        
        For tStringNums_Index = 0 To tStringNums_Length
          
          tOutBool = tOutBool And IsNumeric(tStringNums(tStringNums_Index))
          
          If tOutBool Then
              
              tIPNum = CLng(tStringNums(tStringNums_Index))
              tOutBool = tOutBool And (tIPNum >= 0) And (tIPNum <= 255)
            
            Else
              
              Exit For
          
          End If
        
        Next
      
      End If
      
      CheckIP = tOutBool
    End FunctionPrivate Sub Text1_Change()
      Command1.Caption = CheckIP(Text1.Text)
      Command1.Enabled = CheckIP(Text1.Text)
    End Sub
      

  6.   


    Dim Text As String, IPStr As Variant, IP(3) As Byte, i As Integer
    Text = "192.168.1.1"
    IPStr = Split(Text, ".", 4)
    For i = 0 To 3
        If Val(IPStr(i)) >= 0 And Val(IPStr(i)) <= 255 Then
            IP(i) = IPStr(i)
        Else
            MsgBox "输入地址不合法!请从新输入"
            Exit For
        End If
    Next