Вам определенно следует использовать событие AfterUpdate
- привязка поведения вашего текстового поля к событию click означает, что пользователь, использующий клавиатуру для навигации по форме, не получит такое же поведение.
Кроме того, вам следует повторить это поведение при загрузке формы: если значение по умолчанию для флажка равно False
, тогда текстовое поле должно быть отключено при загрузке формы.
Также, как отмечает @ErikA, вы можетесделайте это с одной читаемой строкой.
Поэтому я бы порекомендовал что-то вроде этого:
Option Explicit
Private Sub chkSurveyRequested_AfterUpdate()
Me.txtDateSurveyReq.Enabled = Me.chkSurveyRequested.value
End Sub
Private Sub Form_Load()
Me.txtDateSurveyReq.Enabled = Me.chkSurveyRequested.value
End Sub
Чтобы не повторяться, вы можете переместить этот код в отдельную подпрограмму:
Опция Явная
Private Sub Form_Load()
' assign the function below to the AfterUpdate event of the checkbox.
Me.chkSurveyRequested.AfterUpdate = "=UpdateControls()"
' now execute the function directly
UpdateControls
End Sub
Private Function UpdateControls()
Me.txtDateSurveyReq.Enabled = Me.chkSurveyRequested.value
End Function