У меня есть поле со списком с 3 столбцами. У меня есть прослушиватель событий Change() в этом поле со списком, который срабатывает каждый раз, когда я нажимаю новый элемент. В самый первый раз, когда я щелкаю этот элемент, он извлекает значения и соответственно обновляет другие текстовые поля, например:
Private Sub cb1_Change()
If cb1.Value = "" Or IsNull(cb1.Value) Then
tb1.Value = ""
tb2.Value = ""
tb3.Value = ""
Else
tb1.Value = cb1.Column(0)
tb2.Value = cb1.Column(1)
tb3.Value = cb1.Column(2)
End If
End Sub
Допустим, я выбираю элемент, содержащий эту информацию: 1, 1, 2017. Он будет заполнять tb1, tb2 и tb3 значениями 1, 1, 2017 соответственно. Если я щелкну другой элемент, скажем 2, 2, 2018, срабатывает событие изменения и переходит в оператор Else. Однако cb1.Column(0), cb1.Column(1), cb1.Column(2) по-прежнему возвращают значения 1, 1, 2017, а не 2, 2, 2018.
Почему эти значения не обновляются при каждом последующем нажатии?
@ Минти, если вы можете объяснить, почему это работает и почему Change() не работает, я приму это.





Поехали ;-)
Событие изменения запускается при каждом нажатии клавиши, но данные в этот момент не сохраняются, поэтому данные базового столбца не обновляются для отражения несохраненного измененного значения отображается.
Событие AfterUpdate срабатывает только после сохранения данных (вероятно, это правильный технический термин), и, следовательно, данные столбца, которые вы используете, теперь также обновляются, отражая сохраненное значение.
Попробуйте использовать событие после обновления, а не событие изменения.