首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子列表/多层列表框?还可以对此循环进行适当的编码

子列表/多层列表框?还可以对此循环进行适当的编码
EN

Stack Overflow用户
提问于 2016-06-21 21:03:36
回答 1查看 79关注 0票数 0

所以我现在有一个列表框,上面有一月到十二月的月份。我想知道有没有办法让它成为子列表?所以如果他们喜欢checked Q1,那么1-3月就会被选中。

另外,我现在有以下代码:

代码语言:javascript
复制
  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,所以我还在摸索基础知识。

EN

回答 1

Stack Overflow用户

发布于 2016-06-21 21:25:48

这里有一个重写的选择。

至于将列分组在一起,你看起来是按季度(日历)完成的吗?

如果为真,您可以改为按季度进行选择。如果您想要自定义分组,请将分组添加到一个二维数组中并循环它们。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37945256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档