Excel VBA列表框 - 仅将非空格式设置为日期

时间:2013-09-07 03:10:13

标签: date excel-vba listbox formatting vba

这个让我难过。我正在使用范围填充列表框,然后将列4格式化为d / mm / yyyy。如果第4列中的所有单元格都有日期,则此方法可以正常工作。由于填充到列表框中的某些单元格实际上是空白的,因此当它碰到这些单元格时会发生崩溃。我已经尝试了各种if和else语句跳过activecell,如果空白没有运气。

感谢任何帮助。 Alex V

 Sub populate_listbox_1()

 Dim I As Long
 Dim I2 As Long
 Dim list_count As Long

Dim MyData As Range
    Dim r As Long
    With edit_report_input.compliments_listbox
        .ColumnCount = 17
        .ColumnWidths = "70;300;75;90;80;80;100;0;0;0;0;0;0;0;0;20;0"
        .RowSource = ""
        Set MyData = ActiveSheet.Range("A4:Q498")   'Adjust the range accordingly
        .List = MyData.Cells.Value
        For r = .ListCount - 1 To 0 Step -1
            If .List(r, 1) = "" Then
                .RemoveItem r
            End If
        Next r
    End With


For I = 0 To edit_report_input.compliments_listbox.ListCount - 1

       edit_report_input.compliments_listbox.List(I, 4) = Format(DateValue(edit_report_input.compliments_listbox.List(I, 4)), "d/mm/yyyy")

Next I

date_rec_compliment = Format(date_rec_compliment, "d/mm/yyyy")

End Sub

1 个答案:

答案 0 :(得分:0)

您可以在更改格式之前随时查看。看看下面的代码片段是否有帮助

For I = 0 To edit_report_input.compliments_listbox.ListCount - 1
   if edit_report_input.compliments_listbox.List(I, 4) <> "" Then
       edit_report_input.compliments_listbox.List(I, 4) = Format(DateValue(edit_report_input.compliments_listbox.List(I, 4)), "d/mm/yyyy")
   End If
Next I