2016-06-27 7 views
0

現在6つのチェックボックスがオーディエンスカテゴリの下にあり、6つのチェックボックスのうち少なくとも1つを選択する必要があるようにするか、「対象を選択してください」というエラーメッセージが表示されます。チェックボックスのチェックボックスのエラー

今のところ、以下のコードでは、6つのボックスのいずれかをチェックするかどうかにかかわらず、プロジェクトは入力されます。

私の現在のコードは次のようになります。ctrl.Value = FalseのようCheckBoxのためのCheckControl機能を設定

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.impactCombobox, "Please select Impact Type") Then Exit Function 
    If Not CheckControl(Me.lengthListbox, "") Then If Not CheckControl(Me.lengthListbox2, "Please enter project length") Then Exit Function 
    If Not CheckControl(Me.rvpCheckbox, "") Then If Not CheckControl(Me.umCheckbox, "") Then If Not CheckControl(Me.uwCheckbox, "") Then If Not CheckControl(Me.baCheckbox, "") Then If Not CheckControl(Me.uaCheckbox, "") Then If Not CheckControl(Me.otherCheckbox, "Please select an Audience") 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 "CheckBox" 
      CheckControl = ctrl.Value = False 
'  Case Else 
    End Select 
    If errMsg = "" Then Exit Function 
    If CheckControl Then Exit Function 
    ctrl.SetFocus 
    MsgBox errMsg 
End Function 

でしょうが、適切な経路で?または、私はCheckInputs関数を正しく設定しませんでしたか?

+0

は 'UserForm'上またはシート上の' CheckBoxes'ていますか?それらがシート上にある場合。 ActiveXの 'CheckBoxes'やフォームコントロールを使用しましたか? – Ralph

+0

彼らはユーザーフォームにあります@ラルフ – adrenom

答えて

0

はい、正しく(わかっていれば)CheckInputs機能が現在間違っているようです。

次のコード行:

If Not CheckControl(Me.rvpCheckbox, "") Then If Not CheckControl(Me.umCheckbox, "") Then If Not CheckControl(Me.uwCheckbox, "") Then If Not CheckControl(Me.baCheckbox, "") Then If Not CheckControl(Me.uaCheckbox, "") Then If Not CheckControl(Me.otherCheckbox, "Please select an Audience") Then Exit Function 

ニーズ以下に変更すべき:

If UserForm1.rvpCheckbox.Value = False And _ 
    UserForm1.umCheckbox.Value = False And _ 
    UserForm1.uwCheckbox.Value = False And _ 
    UserForm1.baCheckbox.Value = False And _ 
    UserForm1.uaCheckbox.Value = False And _ 
    UserForm1.otherCheckbox.Value = False Then 
     UserForm1.otherCheckbox.Caption = "Please select an Audience" 
     '...or maybe a message box instead? 
     MsgBox "Please select an Audience" 
     Exit Function 
End If 
+0

ありがとう、これは動作します!これを適用可能にするために、より良い機能を追加しようとします。 – adrenom

関連する問題