我有一个问题,即excel没有正确识别这些年份。
这是我的代码
' Sort value
max = Sheets("booking").Cells(Rows.count, "A").End(xlUp).Row
Range("A1:H" & max).Select
ActiveWorkbook.Worksheets("Booking").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Booking").Sort.SortFields.Add Key:=Range("D2:D" & max) _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Booking").Sort.SortFields.Add Key:=Range("A2:A" & max) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Booking").Sort
.SetRange Range("A1:H" & max)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' mark past booking in italic and in red if not validated
For L = 2 To max
If Format(CDate(booking.Cells(L, 5).Value), "dd-mm-yy") < Format(CDate(cells(1,10).value), "dd-mm-yy") Then
booking.Cells(L, 5).EntireRow.Font.Italic = True
If booking.Cells(L, 5).Offset(0, 3).Value = "" Then
booking.Cells(L, 5).EntireRow.Font.Color = vbRed
Else
booking.Cells(L, 5).EntireRow.Font.Color = vbBlack
End If
End If
Next L
列D中填充了日期格式dd-mm-yy
单元格(1,10) = now()
当代码需要按日期对订单进行排序时:np,它将2014年订单放在2013年订单之前
BUT
当代码应用日期的斜体格式时&lt;现在,2014年的订单被视为过去,代码将它们用斜体
我做错了什么?
答案 0 :(得分:0)
很明显,在For循环中,您将日期作为字符串进行比较,因此我对您得到不同的结果并不感到惊讶。你应该改变
If Format(CDate(booking.Cells(L, 5).Value), "dd-mm-yy") < Format(CDate(cells(1,10).value), "dd-mm-yy") Then
到
If booking.Cells(L, 5).Value < booking.Cells(1,10) Then
关于不相关的注释,cells
语句的第二部分中变量If
的值是多少?你忘记在booking.
之前忘了吗?