Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel vba用户窗体输入错误检查_Excel_Vba - Fatal编程技术网

Excel vba用户窗体输入错误检查

Excel vba用户窗体输入错误检查,excel,vba,Excel,Vba,我在Excel 2010中有一个用户表单。有8个文本框。提交数据时不需要全部填写。如果所有8个文本框均为空,则会显示一个msgbox。下面是我这样做的代码。有没有更优雅的编码方式?多谢各位 Dim A Dim B Dim C Dim D Dim E Dim F Dim G Dim H If TextBox1.Text = "" Then A = 0 Else A = 1 End If If TextBox2.Text = "" Then B = 0 Else

我在Excel 2010中有一个用户表单。有8个文本框。提交数据时不需要全部填写。如果所有8个文本框均为空,则会显示一个msgbox。下面是我这样做的代码。有没有更优雅的编码方式?多谢各位

Dim A
Dim B
Dim C
Dim D
Dim E
Dim F
Dim G
Dim H

If TextBox1.Text = "" Then
    A = 0
Else
    A = 1
End If

If TextBox2.Text = "" Then
    B = 0
Else
    B = 1
End If

If TextBox3.Text = "" Then
    C = 0
Else
    C = 1
End If

If TextBox4.Text = "" Then
    D = 0
Else
    D = 1
End If

If TextBox5.Text = "" Then
    E = 0
Else
    E = 1
End If

If TextBox6.Text = "" Then
    F = 0
Else
    F = 1
End If

If TextBox7.Text = "" Then
    G = 0
Else
    G = 1
End If

If TextBox8.Text = "" Then
    H = 0
Else
    H = 1
End If

If A + B + C + D + E + F + G + H = 0 Then
    MsgBox "       Enter Some Data,", vbOKOnly + vbCritical, "ERROR!"

Else

'.....rest of code.....

我会做类似的事情

    Dim cCont As Control
    Dim sEntries As String
    ' Change UserForm1 to the actual name of the userform
    For Each cCont In UserForm1.Controls
        If TypeOf cCont Is msforms.TextBox Then _
          sEntries = sEntries & CStr(cCont)
    Next cCont
    If Trim(sEntries) = vbNullString Then _
      MsgBox vbTab & "Enter Some Data!", vbOKOnly + vbCritical, "ERROR!"

我希望这有帮助

相反,如果A+B+C+D+E+F+G+H=0,则此行
可以直接使用
TextBox
值:
If TextBox1.Text&TextBox2.Text&……&TextBox8.Text=”“然后
Private Sub CommandButton1_Click()
  If Not HasSomeInput() Then MsgBox "Enter Some Data,", vbOKOnly Or vbCritical, "ERROR!"
End Sub

Private Function HasSomeInput() As Boolean
  Dim c As MSForms.Control
  Dim t As MSForms.TextBox

  For Each c In Me.Controls
    If TypeOf c Is MSForms.TextBox Then
      Set t = c
      If Len(t.Text) > 0 Then
        HasSomeInput = True
        Exit Function
      End If
    End If
  Next
End Function