我的目标是拥有一个Excel宏。在Excel中,我希望遍历两个下拉列表,以使用VBA运行所有可能的组合。
问题是必须手动遍历下拉列表。
第二个下拉列表依赖于第一个下拉列表。第一个下拉列表是3种类型的车辆:福特、丰田和马自达。第二个下拉列表是维修站点:福特经销商、丰田经销商、马自达经销商、通用维修车间A和通用维修车间B。第二个列表依赖关系是,福特经销商只能维修福特;丰田经销商只能维修丰田。马自达经销商只能修理马自达。一般修理厂A和一般修理厂B可以修理任何类型的车辆。实际问题的数据集要大得多,我必须使用Excel来解决这个问题。
我试着使用两个四个循环。但是有很多我不想发生的组合。
sub test()
Dim i as Integer
Dim j as Integer
For i =1 to 3
Next i
For j=1 to 5
Next j
End Sub()发布于 2019-09-15 23:02:58
假设下拉框是表单控件,下面的代码将执行您想要的操作。
Sub AutoIterate()
Dim i As Long, j As Long
Dim cmb1 As ControlFormat, cmb2 As ControlFormat
Set cmb1 = ActiveSheet.Shapes("Drop Down 1").ControlFormat 'change the worksheet and the combobox name to those that fit for you.
Set cmb2 = ActiveSheet.Shapes("Drop Down 2").ControlFormat
For i = 1 To cmb1.ListCount
For j = 1 To cmb2.ListCount
If (cmb2.List(j) Like "*" & cmb1.List(i) & "*") Or (cmb2.List(j) Like "*General*") Then
Debug.Print cmb1.List(i) & " - " & cmb2.List(j)
End If
Next
Next
Set cmb1 = Nothing
Set cmb2 = Nothing
End Sub请记住,如果:
然后,这也将为更大的数据集做这项工作。
否则,只需相应地调整If语句即可。
https://stackoverflow.com/questions/57943390
复制相似问题