打开时特定日期的VBA Excel单元格格式

打开时特定日期的VBA Excel单元格格式,vba,excel,Vba,Excel,我想有一个单元范围(a9:e13)字体颜色更改为黑色,如果是星期一,如果是其他任何一天更改为白色。我希望在文件打开时执行此操作 到目前为止我有 Private Sub Workbook_open() If Cell(S2).Value = True Then Range("a9:e13").Font.Color = vbWhite Else Range("a9:e13").Font.Color = vbBlack End If End Sub 在单元格S1中,我有==今天() 在单元格S2中,

我想有一个单元范围(a9:e13)字体颜色更改为黑色,如果是星期一,如果是其他任何一天更改为白色。我希望在文件打开时执行此操作

到目前为止我有

Private Sub Workbook_open()
If Cell(S2).Value = True Then
Range("a9:e13").Font.Color = vbWhite
Else
Range("a9:e13").Font.Color = vbBlack
End If
End Sub
在单元格S1中,我有==今天()

在单元格S2中,我有==工作日(S1)=2

这根本不起作用,有人能帮我理解我的错误吗

工作守则

Private Sub Workbook_open()
If Sheet1.Cells(2, "S") = True Then
Sheet1.Range("a9:e13").Font.Color = vbBlack
Else
Sheet1.Range("a9:e13").Font.Color = vbWhite
End If
End Sub

我认为最简单的解决方案不是使用VBA,而是使用条件格式。例如,请参见

另外,您的代码示例似乎有一些错误,应该是这样的吗?其中
Sheet1
必须替换为工作表的名称

If Sheet1.Cells(2, "S") = True Then
    Sheet1.Range("a9:e13").Font.Color = vbWhite
Else
    Sheet1.Range("a9:e13").Font.Color = vbBlack
End If

我将使用以下公式进行条件格式设置:

=WEEKDAY(TODAY())=2
另一种选择是

Private Sub Workbook_open()
    With Worksheets("Your_sheet_name")
        If Weekday(Now) = vbMonday Then
            .Range("a9:e13").Font.Color = vbWhite
            Else
            .Range("a9:e13").Font.Color = vbBlack
        End If
    End with
End Sub
编辑:
@是的,谢谢你提起这件事。我的想法是,由于这是工作簿打开时发生任何更改的原始要求的一部分,并且假设理解了所涉及的含义,我认为假设您指出的情况不太可能发生是公平的。但我实际上可能更好地强调了这是一个聪明的解决方法,但如果电子表格在周末保持打开状态,而用户不关闭并重新打开,则不能保证在周一触发。