Модификация ListBox с использованием VBA - PullRequest
2 голосов
/ 14 апреля 2020

Я очень новичок в VBA, и я пытался найти способ создать выпадающий список выбора даты, но мне не удалось обработать выборку "Февраль". Вот то, что у меня есть,

If (monthListBox.Value = "Jan" Or monthListBox.Value = "Mar" Or monthListBox.Value = "May" Or monthListBox.Value = "Jul" Or monthListBox.Value = "Aug" Or monthListBox.Value = "Oct" Or monthListBox.Value = "Dec") Then
    If dayCount < 31 Then
        For i = dayCount To 31
            dateComboBox.AddItem (i)
        Next i
    End If
ElseIf (monthListBox.Value = "Apr" Or monthListBox.Value = "Jun" Or monthListBox.Value = "Sep" Or monthListBox.Value = "Nov") Then
    dateComboBox.RemoveItem (30)
    If dayCount < 30 Then
        For i = dayCount To 30
            dateComboBox.AddItem (i)
        Next i
    End If
Else
    If isLeapYear = True Then
        With dateComboBox
            .RemoveItem (30)
            .RemoveItem (29)
        End With
    Else
        dateComboBox.RemoveItem (28)
    End If
End If

1 Ответ

1 голос
/ 14 апреля 2020

Попробуйте,

Было бы проще применить расчетную систему дат к системе, чем рассчитать високосный год.

Private Sub UserForm_Initialize()
    Dim y As Integer
    Dim i As Integer, s As String

    y = 2020 '<~~ your year

    For i = 1 To 12
        s = Format(DateSerial(y, i, 1), "mmm")
        monthListBox.AddItem s
    Next i

End Sub

Private Sub monthListBox_Click()
    Dim s  As String
    Dim y As Integer
    Dim st As Double, et As Double
    Dim i As Integer, cnt As Integer

    y = 2020 '<~~ your year

    s = monthListBox.Value
    st = DateValue(y & "/" & s & "/" & 1)
    et = DateAdd("m", 1, st)
    cnt = et - st

    dateComboBox.Clear
    For i = 1 To cnt
        dateComboBox.AddItem i
    Next i


End Sub

Изображение

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...