2016-06-23 1 views
0

私の現在のコードは、lengthListboxまたはlengthListbox2のいずれかが選択されているかどうかをチェックしています。そうしないと、エラーメッセージが表示されます。 lengthListboxまたはlengthListbox2のいずれかから選択するか、「プロジェクトの長さを入力してください」というメッセージが表示されるようにする最も簡単な方法は何ですか?2つの可能性をチェックするエラー

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.audienceCombobox, "Please select an Audience") Then Exit Function 
    If Not CheckControl(Me.impactCombobox, "Please select Impact Type") Then Exit Function 
    If Not CheckControl(Me.lengthListbox, "Please select a current year month") Then Exit Function 
    If Not CheckControl(Me.lengthListbox2, "Please select a next year month") 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 CheckControl Then Exit Function 
    ctrl.SetFocus 
    MsgBox errMsg 
End Function 

私が試したいくつかの点:エンターボタン

Private Sub enterButton_Click() 
    If Me.lengthListbox.ListIndex = -1 And Me.lengthListbox2.ListIndex = -1 Then 
    MsgBox "Please enter Project Length" 
    End If 
    If Not CheckInputs Then Exit Sub 'check for fields to have values 
    Process GetWs(Me.impactCombobox.Value) ' process data passing the proper worksheet got from GetWs() function 
    MsgBox "Project Entered Successfully" 
    ClearUFData 'clear the data 
End Sub 

でエラーチェックを入力しようとすると

は、私はまた、リストボックスをチェックするために意味される個別のサブ関数を作ってみましたCheckInputs内で動作させることはできませんでした。

+0

あなたの投稿はORであるべきですか? –

+0

私はORとANDを試してみましたが、どちらもプロジェクトが正常に進行するようにしました。 – adrenom

+1

私はちょうど 'If Me.ListBox1.ListIndex = -1またはMe.ListBox2.ListIndex = -1 Thenしようとしました MsgBox" Error " End If'それは動作します –

答えて

0

2つの機能をほとんど変更しないでください:

1)巣リストボックスをチェックし(CheckInputs = True前の最後の行を参照)

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.audienceCombobox, "Please select an Audience") 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 

    CheckInputs = True 
End Function 

最初のリストボックスの可能な負のチェックは、第二のリストボックスのチェックが「出口」

2について決める必要がありますように)少し修正CheckControl渡されたエラーメッセージ文字列がvoid 1

であれば何の処置が取られないように

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 

を(右End Select後の最初の行を参照してください)

+0

これは何かのための修正です。連絡先やExcelヘルプフォーラムのユーザーはいますか?私は、マクロヘルプのための "コイン"を報いているトピックを投稿しています。 – adrenom

+0

私はあなたをつかまえません。どういう意味ですか? – user3598756

+0

「Excelヘルプフォーラム」のウェブサイトにアカウントを持っていれば、マクロヘルプと引き換えに "コイン"(支払い)という有益な質問が掲載されています。 – adrenom

関連する問題