Диапазон ввода даты VBA - PullRequest
0 голосов
/ 17 июня 2019

Мне нужно работать с начальной и конечной датами.

Пользователь должен ввести их в текстовые поля пользовательской формы в формате «мм» и «гггг». Я установил лимит текста для каждого текстового поля соответственно на 2 и 4.

Как только пользователь введет 2 цифры, фокус должен перейти к следующему полю. Как мне этого добиться?

Поскольку будут даты начала и окончания: как я могу зациклить все данные, e. г. с 201702 по 201904?

1 Ответ

1 голос
/ 17 июня 2019

Попробуйте следующее. Это проверит, содержит ли текстовое поле два символа и содержит ли оно числовое значение. Затем он установит фокус на второе текстовое поле

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Not (KeyCode = vbKeyBack Or KeyCode = vbKeyDelete Or (47 < KeyCode And KeyCode < 58) Or (95 < KeyCode And KeyCode < 106)) Then
    If Len(Me.TextBox1.Value) = 1 Then
        Me.TextBox1.Value = ""
    Else
        Me.TextBox1.Value = Left(Me.TextBox1.Value, 1)
    End If
End If
If Len(Me.TextBox1) = 2 And IsNumeric(Me.TextBox1) Then
    Me.TextBox2.SetFocus
End If
End Sub

Зацикливание диапазона дат можно сделать следующим образом

Sub loopthroughdates()
Dim d As Date
For d = DateSerial(Year(Now), Month(Now), Day(Now)) To DateSerial(2020, 1, 1)
    'Do stuff
Next d
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...