我正在创建一个数据输入表单。我在表单中有一个列表框,并根据组合框中的所选条件和另一个组合框中的另一个条件填充数据。问题是依赖于组合框和另一个预选列表框中的值的第一个标准不会执行。我似乎可以发现我失踪了。我也使用了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 取决于从前两个选择的值。
非常感谢
答案 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