У меня возникла проблема с 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 проверяет, существует ли файл и помечает его как устаревший, на основе того факта, что флажок (один из параметров для файл) изменился.