VBA: код перестает выполняться при записи в ячейку - PullRequest
0 голосов
/ 10 января 2019

У меня возникла проблема с VBA в Excel, из-за которой подпрограмма ниже внезапно перестала выполняться в указанных строках.

Назначение подпрограммы состоит в обновлении двух ячеек при каждом нажатии флажка «ckbRequestNeu» на рабочем листе. Однако при пошаговом выполнении код только доходит до записи одного значения на лист. Например. если Inp_Exists = 1, то он напишет Inp_Exists = 2, но затем немедленно остановится, как если бы выполнялся оператор End.

Если я затем нажму F8, чтобы продолжить пошаговое выполнение, подпрограмма перезапустится, как если бы флажок был снова нажат. Кажется, что событие ckbRequestNEU_Click было запущено снова, но я понятия не имею, как это происходит.

Private Sub ckbRequestNEU_click()

    With Worksheets("Stress Requests")

        'If an input file exists, mark it as out of date
        If .Range("InpExists").Value = 1 Then
            .Range("InpExists").Value = 2  'Code stops here
        End If

        If .ckbRequestNEU = False Then
            .Range("Request_NEU") = 0   'And here
            .ckbRequestNEU.BackColor = RGB(179, 255, 179)
        Else
            .Range("Request_NEU") = 1   'Or here
            Sheets("Stress Requests").Cells(33, 5) = 1
            .ckbRequestNEU.BackColor = RGB(0, 204, 0)
        End If

    End With

End Sub

Программа в целом должна создать текстовый файл ввода для решателя конечных элементов, и поэтому первый оператор If проверяет, существует ли файл и помечает его как устаревший, на основе того факта, что флажок (один из параметров для файл) изменился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...