2017-08-28 76 views
-1

我有多个文本框,组合框,复选框等 一个窗体我已经写了代码,以检查是否值为null用于控制 - 文本框&组合框 - 比端子如何跳过一个文本框,检查复选框的值?

Dim ctrl As Control 
Dim msg1 As String 
Dim msg2 As String 
Dim msg As String 

With Me 
For Each ctrl In NewJoinerEntry.Controls 

    Select Case TypeName(ctrl) 
     Case "TextBox" 
      If ctrl.Text = "" Then msg1 = "TextBox" 
     Case "ComboBox" 
      If ctrl.ListIndex = -1 Then msg2 = "ComboBox" 
     Case Else 
    End Select 

Next ctrl 
msg = "Please enter complete details in " & msg1 & " & " & msg2 & "." 

If msg = "" Then 
    .Hide ' hide the userform only if no empty textboxes and/or comboboxes 
Else 
    MsgBox msg 
    Exit Sub 
End If 
End With 

上面的代码是工作很好,但 - 在用户表单中有一个文本框,只有当复选框值为yes时才会被激活。

上面的代码是要求为该文本框输入值。想要从正在检查空白值的循环中删除该文本框。

+0

你不能从循环消除它,但你可以核对它的其他属性即是吧'Visible'或'Enabled'? –

+0

我知道这是一个非常奇怪(也可能是哑巴)的问题,我有。我的文本框仅在复选框值为true时才启用。请参见下面的代码: 私人小组CheckBoxPF_Click() 如果CheckBoxPF.Value = TRUE,则 TxtPFNum.Enabled =真 TxtPFNum.BackColor = vbWhite 否则:TxtPFNum.Enabled =假 TxtPFNum.BackColor = vb3DLight 结束如果结束 Sub –

+0

尽管仅当复选框值为true时才启用我的文本框,但是用于检查控件中值的循环 - 考虑禁用的文本框并要求输入值 –

回答

0

忽略未.Enabled控制:

For Each ctrl In NewJoinerEntry.Controls 

    If ctrl.Enabled Then 
     Select Case TypeName(ctrl) 
      Case "TextBox" 
       If ctrl.Text = "" Then msg1 = "TextBox" 
      Case "ComboBox" 
       If ctrl.ListIndex = -1 Then msg2 = "ComboBox" 
      Case Else 
     End Select 
    End If 
Next ctrl 

通过添加For Each循环内的If ctrl.Enabled逻辑,我们简单地指示代码绕过/忽略这是不Enabled=True任何控制。根据需要进行微调或修改。

你或许应该如下面还要修改:

msg = msg1 & " & " & msg2 

If msg = "" Then 
    .Hide ' hide the userform only if no empty textboxes and/or comboboxes 
Else 
    MsgBox "Please enter complete details in " & msg & "." 
    Exit Sub 
End If 
+0

哇..工程就像一种享受。非常感谢。我不是全职的vba,更多的是excel报告人,所以请帮助我解决更多的问题 - 第一次点击cmdsubmitdata按钮时,它向我展示了没有输入值的提示,甚至忽略了禁用的文本框。但是,一旦表单使用表单提交第二次输入时,它没有给出空白值的任何提示:( –

+0

这个条件从字面上看并不是真的:'If msg =“”Then ...'因为你立即分配了'msg = “请在”+ ...'中输入完整的详细信息,我不知道我理解你的后续问题,但这可能与此有关。“ –

+0

我的后续问题是,第一次尝试使用形式让我的空文本框的提示,并显示“请输入完整的详细信息在”+ ...味精,但第二次尝试使用该表单没有得到提示,并没有得到“请输入完整的详细信息”的味精+ ..它除了空白值并粘贴在我的excel数据库中 –

相关问题