检查选项框时出错

时间:2016-07-28 12:52:35

标签: vba excel-vba excel

我试图建立一个错误检查我有两个选项框:

projectOptionbox
implementOptionbox

这是我现在用于错误检查其他一些事情的当前代码,只是不确定选项框需要什么样的代码:

Function CheckInputs() As Boolean
    If Not CheckControl(Me.nameTextbox, "Please enter your Name") Then Exit Function
    If Not CheckControl(Me.projectTextbox, "Please enter a Project Name") Then Exit Function
    If Not CheckControl(Me.initiativeCombobox, "Please select an Initiative") Then Exit Function
    If Not CheckControl(Me.audienceCombobox, "Please select an Audience") Then Exit Function
    If Not CheckControl(Me.impactCombobox, "Please select an Impact Type") Then Exit Function
    If Not CheckControl(Me.hoursTextbox, "Please enter the amount of Monthly Hours") Then Exit Function
    If Not CheckControl(Me.peopleTextbox, "Please enter the amount of People on the Project") Then Exit Function
    If Not CheckControl(Me.lengthListbox, "") Then If Not CheckControl(Me.lengthListbox2, "Please select Project Length") Then Exit Function

    CheckInputs = True
End Function

Private Function CountSelectedListBoxItems(lb As MSForms.ListBox) As Long
    Dim i As Long
    With lb
        For i = 0 To .ListCount - 1
            If .Selected(i) Then CountSelectedListBoxItems = CountSelectedListBoxItems + 1
        Next i
    End With
End Function

Function CheckControl(ctrl As MSForms.Control, errMsg As String) As Boolean
    Select Case TypeName(ctrl)
        Case "TextBox"
            CheckControl = Trim(ctrl.Value) <> ""
        Case "ComboBox"
            CheckControl = ctrl.ListIndex <> -1
        Case "ListBox"
            CheckControl = CountSelectedListBoxItems(ctrl) > 0
'        Case Else
    End Select
    If errMsg = "" Then Exit Function
    If CheckControl Then Exit Function
    ctrl.SetFocus
    MsgBox errMsg
End Function

1 个答案:

答案 0 :(得分:1)

从我从帖子中收集到的内容,听起来你想要开发一种方法来确认组中的OptionButton已被选中。 (不是寻找应用程序错误本身,而是违反您的业务逻辑)。

这比对其他控件的检查要复杂一些,因为其他控件是独立的。有两种选择。 (1)由于OptionButton控件实际上不支持null状态,因此可以在Form Initialization上设置默认选项。然后,无论用户做什么,总会选择其中一个选项。

另一个选项是使用GroupName的{​​{1}}属性将按钮放入一个组中。 (当选项按钮位于组中时,这可确保选择其中一个)。接下来,您可以遍历查找相同OptionButtons的{​​{1}}的所有控件,然后检查是否至少选中了其中一​​个OptionButtons。辅助函数(如下面的函数)可以解决这个问题:

GroupName