Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用VBA验证单元格区域中的日期_Excel_Vba - Fatal编程技术网

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

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

我只是验证单元格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 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