所以我现在有一个列表框,其中包含1月至12月的月份。我想知道是否有办法让它成为子列表?因此,如果他们喜欢检查Q1,那么将检查1月至3月。
我现在也有这个代码:
If audienceListbox.Selected(1) = True Then
.Cells(iRow, 4).Value = "Yes"
Else: .Cells(iRow, 4).Value = "No"
End If
If audienceListbox.Selected(2) = True Then
.Cells(iRow, 5).Value = "Yes"
Else: .Cells(iRow, 5).Value = "No"
End If
If audienceListbox.Selected(3) = True Then
.Cells(iRow, 6).Value = "Yes"
Else: .Cells(iRow, 6).Value = "No"
End If
If audienceListbox.Selected(4) = True Then
.Cells(iRow, 7).Value = "Yes"
Else: .Cells(iRow, 7).Value = "No"
End If
If audienceListbox.Selected(5) = True Then
.Cells(iRow, 8).Value = "Yes"
Else: .Cells(iRow, 8).Value = "No"
End If
If audienceListbox.Selected(6) = True Then
.Cells(iRow, 9).Value = "Yes"
Else: .Cells(iRow, 9).Value = "No"
End If
If audienceListbox.Selected(7) = True Then
.Cells(iRow, 10).Value = "Yes"
Else: .Cells(iRow, 10).Value = "No"
End If
If audienceListbox.Selected(8) = True Then
.Cells(iRow, 11).Value = "Yes"
Else: .Cells(iRow, 11).Value = "No"
End If
If audienceListbox.Selected(9) = True Then
.Cells(iRow, 12).Value = "Yes"
Else: .Cells(iRow, 12).Value = "No"
End If
If audienceListbox.Selected(10) = True Then
.Cells(iRow, 13).Value = "Yes"
Else: .Cells(iRow, 13).Value = "No"
End If
If audienceListbox.Selected(11) = True Then
.Cells(iRow, 14).Value = "Yes"
Else: .Cells(iRow, 14).Value = "No"
End If
If audienceListbox.Selected(12) = True Then
.Cells(iRow, 15).Value = "Yes"
Else: .Cells(iRow, 15).Value = "No"
End If
有没有更好的方法来编写这个循环?现在我在第12个选定的属性上收到错误,说它找不到它,即使我的列表中有12个选项(1月到12月)。
抱歉,我昨天刚刚开始使用VBA,所以我还在搞清楚基础知识。
答案 0 :(得分:0)
这是重写的一个选项。
至于将列分组在一起,看起来你觉得这些是由宿舍(日历)完成的吗?
如果是,您可以选择按季度进行选择。如果需要自定义分组,请将分组添加到二维数组并循环遍历它们。
Public Sub Tester()
Dim MonthNumber As Byte
Dim ColumnNumber As Integer: ColumnNumber = 4
For MonthNumber = 0 To 11
If audienceListbox.Selected(MonthNumber) Then
Cells(iRow, ColumnNumber).Value = "Yes"
Else
Cells(iRow, ColumnNumber).Value = "No"
End If
'Increase the column Index for each time through the loop
ColumnNumber = ColumnNumber + 1
Next
End Sub