我有一个TextBox文本框,这个文本框用来输入学历,如果输入的不是后面这个数组中的任意一元素,就报错,我写了个代码,但是不行,请各位高手帮忙看下,谢谢!红色部分应该怎样写为好?For i = 0 To 9
    If InStr(Split(Array(0, 小学, 初中, 高中, 中专, 职高, 技校, 大专, 大本, 本科), ",")(i), TxtInfor.Text) Then
        MsgBox "请输入正确的学历!", vbOKOnly + vbCritical, "错误"
    Else
         ……………………………………
          ……………………………………
    End If
Next

解决方案 »

  1.   


    似乎用一个 Combo 控件更合理。不要等用户错了,才告诉他,你错了。
      

  2.   

        If InStr("小学" & vbTab & "初中" & vbTab & "高中" & vbTab & "中专" & vbTab & "职高" & vbTab & "技校" & vbTab & "大专" & vbTab & "大本" & vbTab & "本科", TxtInfor.Text) = 0 Then
            MsgBox “请输入正确的学历:" & vbcrlf & "小学, 初中, 高中, 中专, 职高, 技校, 大专, 大本, 本科", vbOKOnly + vbCritical, “错误”
        Else
              ……………………………………
        End If
      

  3.   

    谢谢回复,这样数据有效性的问题到是解决了,不过如果输入不正确的话,MSGBOX会弹出来10次!望改进!
      

  4.   


    这个提议不错,不过我有个问题,就是能不能根据上面一个Label的Caption参数来赋予Combo 控件不同的数据有效性,Label.Caption="学历"时,有效性为"小学, 初中, 高中, 中专, 职高, 技校, 大专, 大本, 本科",Label.Caption="性别"时,有效性为"男,女",谢谢!
      

  5.   

    弹出10次警告是因为你的for循环的问题吧,按照5楼的代码,不要for循环就可以了吧