Я написал простую версию пользовательской формы, чтобы точно определить мою проблему.
Выбор ListBox1 lstClassName
определяет параметры для ListBox2 lstClassName
(который работает), а выбор для ListBox2 должен определять параметры для ListBox3 lstLanguage
(который не работает).
Все ответы, которые я нашел на другие подобные вопросы, затрагивают больше, чем мне нужна эта пользовательская форма. И так как я довольно плохо знаком с VBA, я был бы признателен за помощь в понимании того, что я делаю неправильно.
Я загрузил файл на Google Диск, чтобы вы могли увидеть, как эта форма предназначена для работы. Ссылка на файл Excel
Вот код:
Option Explicit
Public ClassX As Integer
Public LanguageX As Integer
Private Sub UserForm_Initialize()
With lstClassName
.AddItem "Cooking"
.AddItem "Art"
.AddItem "Music"
End With
End Sub
Private Sub lstClassName_Click()
ClassX = lstClassName.ListIndex
Select Case ClassX
Case Is = 0 'Cooking Class
lstLanguage.Clear
lstLanguage.AddItem "English"
lstLanguage.AddItem "Spanish"
Case Is = 1 'Art Class
lstLanguage.Clear
lstLanguage.AddItem "English"
lstLanguage.AddItem "French"
Case Is = 2 'Music Class
lstLanguage.Clear
lstLanguage.AddItem "English"
lstLanguage.AddItem "Spanish"
lstLanguage.AddItem "French"
End Select
End Sub
Private Sub lstLanguage_Click()
LanguageX = lstLanguage.ListIndex
Select Case LanguageX
Case (ClassX = 0 And LanguageX = 0) 'Cooking Class in English
lstDay.Clear
lstDay.AddItem "Monday"
lstDay.AddItem "Wednesday"
Case (ClassX = 0 And LanguageX = 1) 'Cooking Class in Spanish
lstDay.Clear
lstDay.AddItem "Monday"
lstDay.AddItem "Thursday"
Case (ClassX = 1 And LanguageX = 0) 'Art Class in English
lstDay.Clear
lstDay.AddItem "Tuesday"
lstDay.AddItem "Friday"
Case (ClassX = 1 And LanguageX = 1) 'Art Class in French
lstDay.Clear
lstDay.AddItem "Wednesday"
lstDay.AddItem "Thursday"
Case (ClassX = 2 And LanguageX = 0) 'Music Class in English
lstDay.Clear
lstDay.AddItem "Monday"
lstDay.AddItem "Friday"
Case (ClassX = 2 And LanguageX = 1) 'Music Class in Spanish
lstDay.Clear
lstDay.AddItem "Tuesday"
lstDay.AddItem "Wednesday"
Case (ClassX = 2 And LanguageX = 2) 'Music Class in French
lstDay.Clear
lstDay.AddItem "Thursday"
lstDay.AddItem "Friday"
End Select
End Sub
Private Sub CommandButton1_Click()
'This would then be the button to add data to a part of the spreadsheet
End Sub
Примечание: я не удосужился завершить код для CommandButton или что потом делать с данными из этой пользовательской формы.
Спасибо!