Excel VBA Sub ломается после .UsedRange.Delete - PullRequest
0 голосов
/ 05 октября 2019

У меня есть проект 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, является лишь следствием некоторого неожиданного поведения. не могу объяснить ... Любая помощь приветствуется!

...