Чудик писал(а):В модуле формы располагаются процедуры для элемента List. Одна процедура на событие Click, вторая - на клик пункта меню. Во-второй имеется строка
- Код: Выделить всё
If Me.lstMakeOrder.Selected(i) = True Then Me.lstMakeOrder.Selected(i) = False
В первой
- Код: Выделить всё
If Me.lstMakeOrder.DataChanged = True Then ChooseSupplier
При выполнении условия из второй процедуры выполнение кода перескакивает на первую процедуру и выполняет ее. Причем после ее выполнения на продолжение второй не возвращается.
Почему такое и как это избежать? Я лично не доганяю.
Используй в первой процедуре (в первой по написанию в этом топике) булеву переменную-флаг. И если выполняется написаная тобой строка кода, то перед ней ставь флаг равным true.
А во второй проверяй этот флаг и если он установлен в true, тогда сбрасывай этот флаг в false и на выход из процедуры.
Т.е. код должен быть примерно таким
- Код: Выделить всё
Dim bNotChange As Boolean
Option Explicit
'Вторая процедура
.....
If Me.lstMakeOrder.Selected(i) = True Then
bNotChange=True
Me.lstMakeOrder.Selected(i) = False
End if
'В первой
....
If bNotChange Then
bNotChange=False
Exit Sub
End if
If Me.lstMakeOrder.DataChanged = True Then ChooseSupplier