如果表单中列表框的多个critera的其他错误则失败

时间:2018-02-15 15:07:32

标签: excel vba excel-vba

我正在创建一个数据输入表单。我在表单中有一个列表框,并根据组合框中的所选条件和另一个组合框中的另一个条件填充数据。问题是依赖于组合框和另一个预选列表框中的值的第一个标准不会执行。我似乎可以发现我失踪了。我也使用了select case但代码没有为同一个表达式行执行。我没有收到任何错误消息。代码只是不执行。也许有人可以看看?非常感谢!!! 以下是我的代码:

Private Sub subout_Change()
 Dim ws As Worksheet
  Set ws = Worksheets("DataFeed")
  Dim suboutp, suboutpext, subazt As Range
  Dim prov4, prov5, prov6 As Variant
   Dim lCountList As Long


   prov4 = subout.Value


    Me.suboutp.Clear

   With Me.outpro
      For lCountList = 0 To .ListCount - 1
          If .Selected(lCountList) = True Then
               prov5 = .List(lCountList)
          End If
       Next lCountList
    End With

If (prov5 = Left("abc", 3)) And (prov4 = "YES-external") Then
    For Each subazt In Range("SubOutAZT")
            With Me.suboutp
                .AddItem subazt.Value
            End With
        Next subazt

ElseIf (prov4 = "YES-internal") Then
    For Each suboutp In Range("IntSubOut")
        With Me.suboutp
        .AddItem suboutp.Value
        End With
    Next suboutp

 ElseIf (prov4 = "YES-external") Then

        For Each suboutpext In Range("ExtSubOut")
                With Me.suboutp
                    .AddItem suboutpext.Value
                End With
         Next suboutpext

ElseIf prov4 = "NO" Then
             With Me.suboutp
                    .Clear
             End With

        Else
             With Me.suboutp
                    .Clear
             End With
            End If
 End Sub

此行不执行

 ** If (prov5 = Left("abc", 3)) And (prov4 = "YES-external") Then
    For Each subazt In Range("SubOutAZT")
            With Me.suboutp
                .AddItem subazt.Value
            End With
        Next subazt**

我无法弄清楚原因。 outpro 是一个列表框, subout 是一个组合框,而 suboutp 是一个列表框。 suboutp 取决于从前两个选择的值。

非常感谢

1 个答案:

答案 0 :(得分:0)

非常感谢你@Peh的额外一双眼睛。这是可能需要它的人的更新代码。它适用于我的userform,它支持我对listbox和combobox的一个依赖选择的更改。根据需要修改!

Private Sub subout_Change()
    Dim ws As Worksheet
    Set ws = Worksheets("DataFeed")
    Dim suboutp, suboutpext, subazt As Range
    Dim prov4, prov5 As Variant
    Dim lCountList As Long


      prov4 = subout.Value 'this is a combobox that contains several dropdown values.


       Me.suboutp.Clear 'this is the listbox i am trying to populate with which change in selection from combobox above and listbox below

       With Me.outpro ' this is another list box that has a specific dependency for the second listbox above
  For lCountList = 0 To .ListCount - 1
      If .Selected(lCountList) = True Then
           prov5 = .List(lCountList)
      End If
   Next lCountList
End With

 If  Left(prov5, 3)="abc" And (prov4 = "YES-external") Then
      For Each subazt In Range("SubOutAZT")
        With Me.suboutp
            .AddItem subazt.Value
        End With
    Next subazt

ElseIf (prov4 = "YES-internal") Then
  For Each suboutp In Range("IntSubOut")
    With Me.suboutp
    .AddItem suboutp.Value
    End With
Next suboutp

  ElseIf (prov4 = "YES-external") Then

    For Each suboutpext In Range("ExtSubOut")
            With Me.suboutp
                .AddItem suboutpext.Value
            End With
     Next suboutpext

ElseIf prov4 = "NO" Then
         With Me.suboutp
                .Clear
         End With

      Else
         With Me.suboutp
                .Clear
         End With
        End If
End Sub