首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从列表框中选择一个项目以在另一个列表框中显示更多的项目?

从列表框中选择一个项目以在另一个列表框中显示更多的项目?
EN

Stack Overflow用户
提问于 2016-07-24 15:24:56
回答 2查看 472关注 0票数 0

好的,我的编程有问题,我有三个复选框,一个叫做"lstShows“,第二个叫做"lstSeasons”,第三个叫做"lstEpisodes“,我有两个有季节和情节的组合框,一个是"cbSeasons”,第二个叫做“cbEpisodesE29

比方说,一个电视节目包含10季,所以我把电视节目加起来,并为它分配10季,然后第一季,有20集,第2季,有15集,我想要在每个不同的节目和季节中添加项目。我到处都找遍了,但什么也找不到。

下面是布局https://www.dropbox.com/s/u6xc3sb43ksq8qr/Capture.PNG?dl=0

我试着做代码,我做了这个,但它不起作用。

代码语言:javascript
复制
Dim item As String = lstSeasons.SelectedItem
    lstEpisodes.Items.Add(item)

我真的需要帮助。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-07-25 07:40:24

首先,您的数据必须存储在某个地方。例如,每个节目可以有一个工作表,A列中有季节,每一季都在同一行(从B列开始)。如果您不希望看到这些数据,只需隐藏这些床单。

所以如果我理解正确的话,首先你想选择一个节目,然后这个节目的季节出现在第二个列表框中,然后当你选择一个季节时,这个季节的情节出现在第三个列表框中。

首先,您需要将显示的所有内容添加到第一个列表框中。在这里,我将假设您有10个显示,它们对应的工作表是工作表(1)到工作表( 10 ),工作表的名称是显示的名称(但是您可以按照自己的意愿来做,例如,将显示的名称存储在特定的单元格中)。

代码语言:javascript
复制
    Dim showName as String
    For i = 1 To 10
       showName = Worksheets(i).Name
       lstShows.AddItem showName
    Next i

然后,要使四季列表框在选择特定节目时更改,可以这样做:

代码语言:javascript
复制
Private Sub lstShows_Change()

Call Me.lstSeasons.Clear

showName = Me.lstShows.Value
Dim sh as Worksheet
Set sh = ThisWorkbook.Sheets(showName)
rowCount = sh.Cells(sh.Rows.Count,"A").End(xlUp).Row

Dim i As Integer

    For i = 1 To rowCount
       Me.lstSeasons.AddItem sh.Cells(i,1).Value
    Next i

End Sub

要让剧集列表框在选择特定季节时更改,您可以这样做:

代码语言:javascript
复制
Private Sub lstSeasons_Change()

Call Me.lstEpisodes.Clear

showName = Me.lstShows.Value
Dim sh as Worksheet
Set sh = ThisWorkbook.Sheets(showName)
rowCount = sh.Cells(sh.Rows.Count,"A").End(xlUp).Row

Dim colCount As Integer
Dim i As Integer
Dim j As Integer

    For i = 1 To rowCount
       If Me.lstSeasons.Value = sh.Cells(i,1).Value Then
          colCount = sh.Cells(i, sh.Columns.Count).End(xlToLeft).Column
          For j = 2 To colCount
             Me.lstEpisodes.AddItem sh.Cells(i,j).Value
          Next j              
    Next i

End Sub

希望这能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2016-07-26 09:12:55

首先,我认为你需要做的是放置一个多维数组来存储你的信息。更多关于交错数组的详细信息:https://msdn.microsoft.com/en-us/library/hkhhsz9t(v=vs.90).aspx

因此,您可以这样使用它,例如:

代码语言:javascript
复制
Dim shows(50)(50) As string

这将给你50个“节目”,每集50集。现在,您可以根据需要更改使用该程序的程序。

现在进入下一部分,即插入这些。您可以通过通过以下方式分配值来修改它们

代码语言:javascript
复制
 shows(1)(12) = "ep12nameofshow1"

如果希望能够在运行时手动更改名称,则可以将字符串赋值为变量。

现在您要将项目添加到您的列表框中!因此,让我们用一个很好的小循环来讨论这个问题。

代码语言:javascript
复制
For Each episode As String In shows(1) 'show number here
    lstEpisodes.Items.Add(episode)
Next

请注意,我没有测试这一点,因为我没有访问您的大部分代码,所以请告诉我,如果您正面临任何问题。

更新--这段代码应该可以工作:

1-将其添加到页面顶部(在类声明下面)

代码语言:javascript
复制
Dim showEpisodes(99)(99)() As String

把它想象成showEpisodes(Show#,Season#,Ep#)

2-向数组中添加值。如何做到这一点取决于您自己(使用文件、数据库或只是预定的值。您甚至可以将它们放到运行时。但这是另一个问题的另一回事!

3-将此部分添加到您的季节代码中

代码语言:javascript
复制
For Each element As String In showEpisodes(lstShows.SelectedIndex)(lstSeasons.SelectedIndex)
    lstEpisodes.Items.Add(element)
Next
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38553644

复制
相关文章

相似问题

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