使用VBA验证单元格区域中的日期

时间:2018-08-16 06:01:27

标签: excel-vba

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

我只是在验证单元格K中的值。日期为2017年11月1日,单元格的格式为17年11月。通过以上代码,我正在验证它是否包含每月的第一天,并且此代码不起作用。请指导。

1 个答案:

答案 0 :(得分:0)

您的问题主要来自

Worksheets("QC").Cells(i, "K").value 

未检查正确的日期。要检查日期格式,您需要添加.NumberFormat

此外,您使用的mm/dd/yyyy的数字格式与Excel中Nov-17格式的数字格式不同,因此可以将其删除。

现在,要检查一个月的某一天,您可以简单地使用函数Day(),该函数仅在内部字符串中起作用。

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