Учитывая, что ваши текстовые поля имеют имена от txtBox1
до txtBox6
, вы можете поместить эту процедуру в событие AfterUpdate
каждого из них.
Процедура также устанавливает значение невидимых текстовых полей в Null
.Если вы этого не хотите, просто закомментируйте соответствующую строку кода.
Private Sub SetTextBoxes(ByVal startWithTextBoxNr As Long)
Const TEXTBOX_COUNT As Long = 6
Const COMMON_NAME As String = "txtBox"
Dim index As Long
For index = startWithTextBoxNr + 1 To TEXTBOX_COUNT
With Me(COMMON_NAME & index)
.Visible = Not IsNull(Me(COMMON_NAME & index - 1).Value)
If Not .Visible Then .Value = Null
End With
Next index
End Sub
Обработчики событий будут выглядеть так:
Private Sub txtBox1_AfterUpdate()
SetTextBoxes 1
End Sub
Private Sub txtBox2_AfterUpdate()
SetTextBoxes 2
End Sub
Private Sub txtBox3_AfterUpdate()
SetTextBoxes 3
End Sub
Private Sub txtBox4_AfterUpdate()
SetTextBoxes 4
End Sub
Private Sub txtBox5_AfterUpdate()
SetTextBoxes 5
End Sub
Кроме того, вы можете добавить SetTextBoxes
кLoad
событие формы для инициализации элементов управления один раз для первого текстового поля:
Private Sub Form_Load()
SetTextBoxes 1
End Sub