vba - 根据 VBA 中的日期值识别日期

标签 vba excel

我在 K 列下有日期和时间,在 M 列下有与这些天相对应的某些值(数字)。

我有一个代码,如果这些值大于 1 并且它们在 P 列中有文本“等待”,则可以更改这些值的颜色。

我不知道要做的是,将以下条件添加到此代码中:

1.我想确定这些天是否属于星期日。

2.如果是,那么我想检查星期日的时间(假设日期/时间格式是“15/1/2016 17:00”,那么星期日结束的剩余时间是 0.3 天)从 M 列中的数字中减去,如果数字仍然 >1,则应以“红色”突出显示。

3.减法不应影响或出现在当前工作表中。

我尝试了下面的代码,但我不确定我在哪里犯了错误,因为没有结果。

Sub Datefilter()
Dim r As Long
Dim m As Long

On Error GoTo ExitHere:
m = Range("M:P").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Application.ScreenUpdating = False
   For r = 1 To m
      remainingDay = 0

       If Weekday(Range("K" & r)) = 1 Then

              remainingDay = Round((24 - Format(TimeValue(Range("K" & r)), "h")) / 24, 1)

               End If
      If Range("P" & r) = "*waiting*" Then
            If Range("M" & r) - remainingDay >= 1 Then
                  Range("M" & r).Cells.Font.ColorIndex = 3
                  Else
                 Range("M" & r).Cells.Font.ColorIndex = 0
               End If
               End If
      Next r
      ExitHere:
      Application.ScreenUpdating = True
End Sub

最佳答案

我觉得使用 Excel 的内置函数和一些辅助列会更容易。

(1) 使用WEEKDAY()函数获取星期几。然后使用简单的比较来检查是否是星期日。

(2) 日期存储为自 1900 年 1 月 0 日以来过期的时间量,部分日期作为分数。因此,要返回时间,只需从日期中取出日期的舍入位即可:=A1-ROUNDDOWN(A1,0)

(3) 使用条件格式检查单元格是否< 1,然后将其变为红色。

如果您想要示例的屏幕截图,请告诉我。

关于vba - 根据 VBA 中的日期值识别日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41757406/

相关文章:

ms-access - 如何获取数据库记录集/引用的计数(以调试ERR#3048-无法打开更多数据库)?

Excel 到 Word 到 PDF 使用 VBA

excel - 每当添加工作表时执行代码

arrays - 跳过数组中的列

mysql - 通过 CSV 将 Excel 数据导入 MySQL 时出现问题

arrays - VBA 数组切片(不是 Python 意义上的)

arrays - 将范围传递给 Excel 用户定义函数并将其分配给数组

python - 使用 openpyxl 编辑电子表格。无法写入单元格, "cell is read-only error"

java - 如何在 weburl 中使用 REST API Controller 返回 xls excel 文件响应

vba - 使用多个不连续选择