簡體   English   中英

打開特定日期的VBA Excel單元格格式

[英]VBA Excel Cell formatting on specific days on open

我想讓一個單元格范圍(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中,我有= = Today()

在單元格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,而是使用條件格式。 例如,請參閱http://office.microsoft.com/zh-cn/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

我將使用以下公式進行條件格式設置:

=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

編輯:@ hnk-是的,謝謝提出。 我的想法是,由於這是工作簿打開時進行任何更改的原始要求的一部分,並且假設理解了所涉及的含義,所以我認為假設您指出的情況不太可能發生是合理的。 但我可能會更好地強調這一點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM