我希望根据输入文档的日期更改我输入的文字颜色。现在我在工作表中有一个单元格,用于识别当前日期=TEXT(TODAY(), "dddd")
。然后是以下VBA代码:
If Range("A1").Value = "Thursday" Then Cells.Font.ColorIndex = 5
问题是它改变了文档中的所有文本 - 我只想在运行宏后输入的单元格的颜色索引为5.我不想指定范围因为范围会改变对于每一行,取决于最后一个文本的输入位置,我认为有更简单的方法,而不是循环遍历每一行并查找最后一列。我想要一个能够识别日期的宏,为我每天输入的任何东西分配颜色 - 星期一蓝色,星期二红色等等。我会感激任何帮助,特别是在改变宏之后写的文字的颜色时跑了!
答案 0 :(得分:2)
您可以使用工作表更改事件执行此操作。转到要在其上实现的工作表的模块(右键单击选项卡并单击“查看代码”),然后输入以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
For Each c In Target
Select Case LCase(c.Value)
Case "monday": c.Font.ColorIndex = 5
Case "tuesday": c.Font.ColorIndex = 4
End Select
Next
End Sub
只要工作表发生更改,此代码就会运行(它不会应用于现有单元格,除非它们已更新)。
答案 1 :(得分:0)
打开VBA而不是创建模块,右键单击Sheet1 - >查看代码。 这应该打开一个区域供您编码。转到右上角,然后选择更改。每次更改所选单元格的值后,应运行代码。
Private Sub Worksheet_Change(ByVal Target As Range)
If Format(Now, "dddd") = "Thursday" Then
Target.Font.ColorIndex = 5
End If
End Sub
应该看起来像这样。或者这个:
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Format(Now, "dddd")
Case "Sunday"
Target.Font.ColorIndex = 1
Case "Monday"
Target.Font.ColorIndex = 2
Case "Tuesday"
Target.Font.ColorIndex = 3
Case "Wednesday"
Target.Font.ColorIndex = 4
Case "Thursday"
Target.Font.ColorIndex = 5
Case "Friday"
Target.Font.ColorIndex = 6
Case "Saturday"
Target.Font.ColorIndex = 7
End Select
End Sub
显然,颜色可以是你想要的任何颜色,但它会根据实际的日期而不是你输入的内容而改变。
我想到的最后一个是:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.ColorIndex = Weekday(Now)
End Sub
答案 2 :(得分:0)
如果要根据工作表更改的日期为工作表中更改的任何单元格着色,则应尝试以下代码。它不会在单元格中查找“星期一”值,而是为星期一更改的所有单元格着色。我正在使用 Now()告诉代码实际更改单元格的时刻,然后我使用 Datepart 来提取当天的索引(有点像名称,在本例中为1到7)。
Private Sub Worksheet_Change(ByVal Target As Range)
CurDay = DatePart("w", Now())
Dim c As Range
For Each c In Target
If CurDay = 0 Then '0 is impossible just to keep the code "clean"
ElseIf CurDay = 2 Then c.Font.ColorIndex = 5 '2 is by default Monday
ElseIf CurDay = 3 Then c.Font.ColorIndex = 6 'etc
ElseIf CurDay = 4 Then c.Font.ColorIndex = 7 'etc
ElseIf CurDay = 5 Then c.Font.ColorIndex = 8 'etc
ElseIf CurDay = 6 Then c.Font.ColorIndex = 9 'etc
ElseIf CurDay = 7 Then c.Font.ColorIndex = 10 'etc
ElseIf CurDay = 1 Then c.Font.ColorIndex = 11 ' Sunday
End If
Next
End Sub
测试它,就像一个魅力!希望这是你想要的。 :)