好的,我的编程有问题,我有三个复选框,一个叫做"lstShows“,第二个叫做"lstSeasons”,第三个叫做"lstEpisodes“,我有两个有季节和情节的组合框,一个是"cbSeasons”,第二个叫做“cbEpisodesE29
比方说,一个电视节目包含10季,所以我把电视节目加起来,并为它分配10季,然后第一季,有20集,第2季,有15集,我想要在每个不同的节目和季节中添加项目。我到处都找遍了,但什么也找不到。
下面是布局https://www.dropbox.com/s/u6xc3sb43ksq8qr/Capture.PNG?dl=0
我试着做代码,我做了这个,但它不起作用。
Dim item As String = lstSeasons.SelectedItem
lstEpisodes.Items.Add(item)
我真的需要帮助。
谢谢。
发布于 2016-07-25 07:40:24
首先,您的数据必须存储在某个地方。例如,每个节目可以有一个工作表,A列中有季节,每一季都在同一行(从B列开始)。如果您不希望看到这些数据,只需隐藏这些床单。
所以如果我理解正确的话,首先你想选择一个节目,然后这个节目的季节出现在第二个列表框中,然后当你选择一个季节时,这个季节的情节出现在第三个列表框中。
首先,您需要将显示的所有内容添加到第一个列表框中。在这里,我将假设您有10个显示,它们对应的工作表是工作表(1)到工作表( 10 ),工作表的名称是显示的名称(但是您可以按照自己的意愿来做,例如,将显示的名称存储在特定的单元格中)。
Dim showName as String
For i = 1 To 10
showName = Worksheets(i).Name
lstShows.AddItem showName
Next i然后,要使四季列表框在选择特定节目时更改,可以这样做:
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要让剧集列表框在选择特定季节时更改,您可以这样做:
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希望这能帮上忙!
发布于 2016-07-26 09:12:55
首先,我认为你需要做的是放置一个多维数组来存储你的信息。更多关于交错数组的详细信息:https://msdn.microsoft.com/en-us/library/hkhhsz9t(v=vs.90).aspx
因此,您可以这样使用它,例如:
Dim shows(50)(50) As string这将给你50个“节目”,每集50集。现在,您可以根据需要更改使用该程序的程序。
现在进入下一部分,即插入这些。您可以通过通过以下方式分配值来修改它们
shows(1)(12) = "ep12nameofshow1"如果希望能够在运行时手动更改名称,则可以将字符串赋值为变量。
现在您要将项目添加到您的列表框中!因此,让我们用一个很好的小循环来讨论这个问题。
For Each episode As String In shows(1) 'show number here
lstEpisodes.Items.Add(episode)
Next请注意,我没有测试这一点,因为我没有访问您的大部分代码,所以请告诉我,如果您正面临任何问题。
更新--这段代码应该可以工作:
1-将其添加到页面顶部(在类声明下面)
Dim showEpisodes(99)(99)() As String把它想象成showEpisodes(Show#,Season#,Ep#)
2-向数组中添加值。如何做到这一点取决于您自己(使用文件、数据库或只是预定的值。您甚至可以将它们放到运行时。但这是另一个问题的另一回事!
3-将此部分添加到您的季节代码中
For Each element As String In showEpisodes(lstShows.SelectedIndex)(lstSeasons.SelectedIndex)
lstEpisodes.Items.Add(element)
Nexthttps://stackoverflow.com/questions/38553644
复制相似问题