2014-01-29 61 views
3

我創建了一個簡單的用戶窗體,其中包含一組日期範圍(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 - 07月14」),但是當我打開下拉列表,顯示所有的列表條目格式在選定的項目格式默認「m/d/yyyy」。有沒有辦法改變列表條目的格式?對於那些習慣在本月前一天看到的用戶來說,這是令人困惑的。

在此先感謝您的幫助,非常感謝。

埃德

回答

2

我設法通過在comboboax每個項目進行循環並格式化修復(隨時糾正我,如果有一個更優雅的方式來做到這一點!)

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 

抱歉張貼,但我真的認爲我卡住了。再次

感謝,

埃德