我试图根据另一个组合框的选择来填充组合框(cbo)。
第一个cbo选择是客户名称。这将从使用cstmrId和cstmrNm的表中填充。该名称填充在cbo中,但cstmrId已绑定。
第二个cbo用于客户位置。我想使用cstmrd将下拉限制为在第一个cbo中选择的客户的位置,cstmr位置可以在名为" tblCstmrLoc"的名为table的范围内的不同工作表上找到。其中第1列是cstmrId,第2列是cstmrLoc,表格大于这两列。
我已经与For Each和Do While循环混乱,但是错过了如何将循环限制为在第一个下拉列表中选择的cstmrId。
这是我到目前为止所做的:
Private Sub cboCstmr_Change()
Dim CstmrId As Integer
Dim Rng As Range
CstmrId = Me.cboCstmr.ListIndex + 1
Set Rng = Range("LISA.xlsm!tblCstmrLoc")
Do While Rng.Value = CstmrId
cboCstmrLoc.AddItem ActiveCell.Offset(0, 1).Value
MsgBox ActiveCell.Offset(0, 1).Value
Loop
End Sub
答案 0 :(得分:1)
以下是使用的最终代码
Private Sub cboCstmr_Change()
Dim count As Long
Dim Rng As Range
Range("CstmrNmUsed") = cboCstmr.Text
Me.cboCstmrLoc.Clear
With Me.cboCstmrLoc
For Each Rng In Range("tblCstmrLoc").Columns(1).Cells
If CStr(Rng.Value) = Range("CstmrIdUsed") Then
.AddItem Rng.Offset(0, 1).Value
.List(count, 1) = Rng.Offset(0, 2).Value
count = count + 1
End If
Next
End With
End Sub
注意:我还将这行代码添加到表单的open,clear等等中,以保持计算出的CstmrIdUsed值。
Range("CstmrIdUsed").FormulaArray = "=SUM(IF(tblCstmr[CSTMR_NM]=CstmrNmUsed,tblCstmr[CSTMR_ID]))"
非常感谢托马斯帮助我完成这项工作。