在组合框下拉列表中格式化日期

时间:2014-01-29 21:50:34

标签: vba date combobox

我创建了一个简单的用户表单,其中的组合框填充了一系列日期(rngWeekList),但是我很头疼,试图让下拉框中的列表出现在“dd-mmm-yy”中格式。这是我的代码:

Private Sub UserForm_Initialize()

    ' Populate the list with the date range
    ComboBox1.List = Worksheets("Cover").Range("rngWeekList").Value

    ' Set the defulat selection (based off rngWeekIndex)
    ComboBox1.ListIndex = Worksheets("Cover").Range("rngWeekIndex").Value - 1

    ' Format
    ComboBox1 = Format(ComboBox1, "dd-mmm-yy")

End Sub

Private Sub ComboBox1_Change()
    ' Format 
    ComboBox1 = Format(ComboBox1, "dd-mmm-yy")
End Sub

这设法正确地格式化组合框中的所选项目(例如“02-Jul-14”),但是当我打开下拉列表时,显示的所有列表条目都以默认的“m / d / yyyy”格式化。有没有办法更改列表条目的格式?对于习惯于在月份前一天看到的用户来说,这会让人感到困惑。

在此先感谢您的帮助,我们非常感谢。

1 个答案:

答案 0 :(得分:2)

我设法通过循环使用组合框中的每个项目并对其进行格式化来修复它(如果有更优雅的方法,请随时纠正我!)

Private Sub UserForm_Initialize()
Dim i As Integer

    ' Populate the list with the date range
    ComboBox1.List = Worksheets("Cover").Range("rngWeekList").Value

    'Format all items
    For i = 0 To ComboBox1.ListCount - 1
        ComboBox1.List(i) = Format(DateValue(ComboBox1.List(i)), "dd-mmm-yy")
    Next i

    ' Set the default selection (based off rngWeekIndex)
    ComboBox1.ListIndex = Worksheets("Cover").Range("rngWeekIndex").Value - 1

End Sub

Private Sub ComboBox1_Change()
    ' Format the selection
    ComboBox1 = Format(ComboBox1, "dd-mmm-yy")
End Sub

很抱歉发布,但我真的以为我被卡住了。

再次感谢,