Вот код, который вы можете вставить в таблицу кодов вашей пользовательской формы.
Option Explicit
Private Sub TextBox1_Change()
' runs after every character typed
SetTbx3 False
End Sub
Private Sub TextBox1_AfterUpdate()
' runs when the focus leaves TextBox1
SetTbx3 True
End Sub
Private Sub TextBox2_Change()
' runs after every character typed
SetTbx3 False
End Sub
Private Sub TextBox2_AfterUpdate()
' runs when the focus leaves TextBox2
SetTbx3 True
End Sub
Private Sub SetTbx3(ByVal Complete As Boolean)
If IsDate(TextBox2.Value) And (Complete = True) Then
TextBox3.Value = UCase(Left(TextBox1.Value, 3)) & Format(CDate(TextBox2.Value), "mm/yyyy")
Else
TextBox3.Value = Left(TextBox1.Value, 3) & Right(TextBox2.Value, 7)
End If
End Sub
Есть 3 текстовых поля: TextBox1 (Имя), TextBox2 (DOB) и TextBox3 (Имя файла). Для каждого из TextBox1 и TextBox2 есть две процедуры обработки событий: Change
и AfterUpdate
. Событие Change наступает при вводе символа в текстовое поле. Событие обновления происходит, когда вы перемещаете курсор из текстового поля после редактирования. Это только для демонстрации. Вам могут не понадобиться оба.
Все эти события вызывают Sub SetTbx3
, который требует один аргумент, «Complete», который, если True, означает, что вызов произошел из события AfterUpdate, SetTbx3
создаст другую строку для TextBox3 в зависимости от того, являются ли аргументы полными или нет, но все равно предоставит строку, основанную на введенной строке, вместо введенной даты DOB, если введенная дата не распознается как дата.