У меня есть проект Excel, где у меня есть таблицы в листах (базовая база данных). Цель состоит в том, чтобы отслеживать прогресс учеников в отношении различных целей, которые они должны выполнять в различных вопросах (и подпунктах, подпунктах и подподпунктах). Я пытаюсь создать пользовательскую форму для учителя, чтобы выбрать конкретный набор ученика, материи, под ... суб-материи и получить уровень, достигнутый в целях, соответствующих этому конкретному набору. Я нахожусь на этапе выбора набора параметров:
Пользовательская форма, не завершена
Моя проблема: в случае, если я выбираю вопрос, то субвопрос, а затем вернуться, чтобы изменить основной вопрос, Excel делает что-то супер странное. Он останавливает Sub после определенной строки, и .Activate больше не работает для выбора листа в других Sub:
Sub ListMatieres_Change()
If Not IsNull(ListMatieres.Column(0)) Then
With Worksheets("S-matiere_tmp")
.Activate
.UsedRange.Delete 'Stops after this line------------------------------------------------
getRows("S-matiere", "s_matiere", "Parent", ListMatieres.Column(0)).Copy
.Activate
Range("A1").PasteSpecial Paste:=xlPasteValues
ListSmatieres.RowSource = .UsedRange.Address
End With
Sheets("Accueil").Activate
End If
ListSsmatieres.RowSource = ""
ListSssmatieres.RowSource = ""
End Sub
Sub ListSmatieres_Change()
If Not IsNull(ListSmatieres.Column(0)) Then
With Sheets("SS-matiere_tmp")
.Activate
.UsedRange.Delete 'Getting an error here, because the .activate has not worked----------
getRows("SS-matiere", "ss_matiere", "Parent", ListSmatieres.Column(0)).Copy
.Activate
Range("A1").PasteSpecial Paste:=xlPasteValues
ListSsmatieres.RowSource = .UsedRange.Address
End With
Sheets("Accueil").Activate
End If
ListSssmatieres.RowSource = ""
End Sub
При изменении вещества запускается первый Sub, который запускает второй.
Вот ссылка на файл .xlsm: Ссылка на диск
Я действительно ничего не понимаю, потому что ошибка, выданная Excel, является лишь следствием некоторого неожиданного поведения. не могу объяснить ... Любая помощь приветствуется!