VBA Excel - 日期格式迭代问题

时间:2014-07-23 15:49:03

标签: excel vba iteration date-format

基本上,我希望VBA循环一个范围(E2 - 最后一行),当它发现2014年要添加的任何月份和日期“dd / mm”时,c.i.p“dd / mm / 2014”。其次,如果它找到“不适用”,它应该用红色突出显示该单元格。但是,我的代码没有做任何事情。我的代码出了什么问题?

Sub yearstandard()

    Dim wb As Workbook

    Dim ws As Worksheet

    Dim range As range

    Dim i As Long


    LastRow = FindLastRow(1)

    For i = 5 To LastRow        'test row 1 to whatever the last populated row is

    Set cell = Cells(i, 2)  'Define cell as the cell to be tested e.g. (cells 1,1) is A1

    Select Case cell.Value      'select case value in cell

    Case Is = "dd/mm"

    cell.Value = "dd/mm/2014"       'wrap each date entered in year 2014

    Case Is = "n/a"

        cell.Interior.Color = RGB(255, 255, 102)    'highlight cells with value "n/a" in red

    End Select

    Next i      'go to the next loop counter


End Sub

1 个答案:

答案 0 :(得分:0)

在您的评论中,您表示您将手动输入3/14或n / a进入单元格。

假设您的区域设置为美国(mdy),并且您将在今年输入数据,则无需使用VBA。只需输入3/14,Excel将自动添加当前年份。关于将n / a转为红色,只需在整个列上使用条件格式。您可能希望将列自定义格式为d / m / yyyy,如果您没有"请参阅" 2014年。

如果您绝对必须在VBA中执行此操作,那么类似下面的内容将为E列中的范围设置从E2到最后一行的选项。

我还假设该列中没有其他条件格式。如果有,那么,我们将需要在运行宏时保留它,而不是删除旧的条件格式。

Sub FormatColE()
With Range("E2", Cells(Rows.Count, "E").End(xlUp))
    .NumberFormat = "m/d/yyyy"
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=""n/a"""
    .FormatConditions(.FormatConditions.Count).SetFirstPriority
    With .FormatConditions(1)
        .Interior.Color = vbRed
        .StopIfTrue = False
    End With
End With
End Sub