Excel 使用VBA验证单元格区域中的日期
我只是验证单元格K中的值。它的日期为2017年11月1日,单元格格式为11月17日。通过上面的代码,我正在验证它是否包含每月的第一天,并且此代码不起作用。您的问题主要来自Excel 使用VBA验证单元格区域中的日期,excel,vba,Excel,Vba,我只是验证单元格K中的值。它的日期为2017年11月1日,单元格格式为11月17日。通过上面的代码,我正在验证它是否包含每月的第一天,并且此代码不起作用。您的问题主要来自 Sub DataFormat() Dim i As Long, LastRow As Long LastRow = Worksheets("QC").Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To LastRow If Workshee
Sub DataFormat()
Dim i As Long, LastRow As Long
LastRow = Worksheets("QC").Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow
If Worksheets("QC").Cells(i, "K").Value = "MM/01/YYYY" Then
Worksheets("QC").Cells(i, "K").Interior.ColorIndex = 2
Else
Worksheets("QC").Cells(i, "K").Interior.ColorIndex = 3
End If
Next i
End Sub
它没有检查正确的日期。要检查日期格式,您需要添加.NumberFormat
此外,您正在使用的编号格式与您在11月17日表格excel中的编号格式不同,因此您可以将其删除
现在,为了检查一个月的哪一天,您只需使用函数day()
,该函数只对其中的字符串起作用
Worksheets("QC").Cells(i, "K").value
它还没有更新。代码运行良好,daydate被分配了一个值。但对于日期值为2的项目,颜色仍然为白色。请帮忙。好的,这就是两个IF的问题。现在已更正,请再次检查;)因此,当我尝试调试代码时,代码运行良好,直到“If Worksheets(“QC”).Cells(i,“K”).NumberFormat=“mm/dd/yyyyy”和Day(daydate)=1”,然后在这之后它将结束If,再次结束If。这意味着它没有考虑颜色索引部分。您的错误代码是什么?它停在第一排了吗?如果考虑到第二排的话,就不算了。就像它运行良好,直到第二个if,然后它将转到else,条件,然后endif。这意味着,如果写入颜色索引=2,则不适用于此。
Option Explicit
Sub DataFormat()
Dim i As Long, LastRow As Long
Dim daydate As String
LastRow = Worksheets("QC").Cells(Rows.Count, "A").End(xlUp).Row
For i = 3 To LastRow
daydate = Worksheets("QC").Cells(i, "K").Value
If IsDate(daydate) Then
If Day(daydate) = 1 Then
Worksheets("QC").Cells(i, "K").Interior.ColorIndex = 2
Else
Worksheets("QC").Cells(i, "K").Interior.ColorIndex = 3
End If
Else
Worksheets("QC").Cells(i, "K").Interior.ColorIndex = 3
End If
Next i
End Sub