如果日期是星期一,我希望将单元格区域(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
答案 0 :(得分:1)
我认为最简单的解决方案不是使用VBA,而是使用条件格式。例如,请参阅http://office.microsoft.com/en-us/excel-help/use-a-formula-to-apply-conditional-formatting-HA102809768.aspx
此外,您的代码示例似乎有一些错误,它应该是这样的?必须用工作表的名称替换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
答案 1 :(得分:0)
我会用这个公式进行条件格式化:
=WEEKDAY(TODAY())=2
答案 2 :(得分:0)
另一种选择是
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
编辑: @hnk - 是的,谢谢你提出这个问题。我的想法是,由于这是原始要求的一部分,任何更改都会在工作簿开放时发生,并且假设对所涉及的含义有所了解,我只是认为假设您指出的方案不太可能发生是公平的。但我真的可能更好地强调那个