Ввод дат только текущего года через userform - VBA

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, подскажите, как можно заблокировать или выводить сообщение, если на лист вводят дату не текущего года, то есть можно добавлять даты только с 01.01.2017 по 21.12.2017?

Решение задачи: «Ввод дат только текущего года через userform»

textual
Листинг программы
Private Sub cmbDay_Change()
    Dim i&, s$
    With cmbDay
        s = .Text
        If s <> "" Then
            i = Asc(Right(s, 1))
            If i > 47 And i < 58 Then
                i = Val(s)
                If i < 32 Then .Tag = s Else .Text = .Tag
            Else
                .Text = .Tag
            End If
        End If
    End With
End Sub
 
Private Sub cmdadd_Click()
    Dim i&
    i = Cells(Rows.Count, 1).End(xlUp).Row
    i = i   1
    With DateInput
        Cells(i, 1).Value = CStr(DateSerial(.cmbYear, .cmbMonth.ListIndex   1, .cmbDay))
    End With
End Sub
 
Private Sub cmdcancel_Click()
    Unload Me
End Sub
 
Private Sub UserForm_Initialize()
    Dim i&
    With cmbDay
        For i = 1 To 31
            .AddItem i
        Next i
        .Text = .List(Day(Now) - 1)
    End With
    With cmbMonth
        For i = 1 To 12
            .AddItem Format(DateSerial(0, i, 1), "mmmm")
        Next i
        .Text = .List(Month(Now) - 1)
    End With
    With cmbYear
        .AddItem 2017
        .Text = .List(0)
    End With
End Sub

Оцени полезность:

13   голосов , оценка 3.769 из 5
Похожие ответы