2 votes

Modification de ListBox à l'aide de VBA

Je suis très novice en VBA et j'ai essayé de trouver un moyen de créer une liste déroulante de sélection de date, mais je n'ai pas réussi à gérer une sélection "février". Voici ce que j'ai fait jusqu'à présent,

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

1voto

Dy.Lee Points 3692

Essayez,

Il vous serait plus facile d'appliquer le système de dates calculées au système que de calculer l'année bissextile.

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

Image

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X