如何在日历中自动为当前月份的单元格着色
Posted
技术标签:
【中文标题】如何在日历中自动为当前月份的单元格着色【英文标题】:How to automatically color cells of the current month in calendar 【发布时间】:2020-01-25 09:38:59 【问题描述】:我在 Excel 中有一个日历,一直持续到 2020 年 7 月。我希望在我的工作表中拥有的是每次打开工作簿时自动着色“当前月份”的所有单元格。
我已经做了“当天自动着色” 这是代码:
Public Sub FormattaCalendario()
Dim LColCount As Long
Dim cell As Variant
ultimoGiorno = DateSerial(Year(Date), Month(Date), 0)
primoGiorno = ultimoGiorno - Day(ultimoGiorno) + 1
LColCount = Cells(TrovaInizioProgetti(activeCell) - 1,
Columns.Count).End(xlToLeft).Column
For Each cell In Range(Cells(TrovaInizioProgetti(activeCell) - 1, 11),
Cells(TrovaInizioProgetti(activeCell) - 1, LColCount))
If cell.Value = Date Then
cell.Interior.Color = RGB(255, 255, 91)
End If
If CDate(cell.Value) <> Date Then
cell.Interior.Color = RGB(255, 150, 0)
End If
Next
End Sub
提前谢谢你。
【问题讨论】:
你只需要你所在的那一天,而不是你需要使用If Month(cell) = Month(Date) then
这样你就可以选择月份。
类似:If cell.Value = Month(Date) Then cell.Interior.Color = 'Color End If
不,因为cell.value
是日期,而不是月份...您需要使用Month()
进行两个比较。看看下面的答案。
【参考方案1】:
这种替换应该可以满足您的要求:
If Month(CDate(cell.Value)) = Month(Date) Then
cell.Interior.Color = RGB(255, 255, 91)
Else
cell.Interior.Color = RGB(255, 150, 0)
End If
请注意,您不需要为此使用两个单独的 IF
语句。
【讨论】:
好的,成功了,非常感谢。最后一个问题,也为当天着色? @Lomoo 把你拥有的那个和If
放在一起,然后检查月份一个ElseIf
那么如果今天是星期六,需要显示哪种颜色呢?因为我相信你想要今天的颜色,周六和周日的颜色不同,而本月的其余时间颜色不同。那么它是哪一个?
无论如何,认为 If 语句逐行运行,并且当比较为真时将停止,您需要知道的是 Format(cell, "dddd") = "Saturday"
或 sunday 可以解决问题,现在将它与您的逻辑。
@Lomoo 转到 Excel 和单元格格式,您可以在那里玩弄并尝试它的作用。假设您有 25/09/2019,“dd” = 25,“ddd” = 当天的简称,“dddd” = 当天的全名。与月份“mm”、“mmm”、“mmmm”相同,您可以根据需要格式化日期【参考方案2】:
使用条件格式可以更轻松地完成此操作。将此公式应用于您的日期所在的范围:
=MONTH(A1)=MONTH(NOW())
这将突出显示该范围内日期在当月内的每个单元格。确保将“A1”更改为该范围内的第一个单元格。或者,如果您想突出显示整行,请输入 $*Column*1
,其中 *Column*
是您的日期所在的列。然后应用到您的整个工作表。
编辑由于我仍然相信这个答案而不是 VBA 选项,因此我还将回答 cmets 中关于该答案的问题:
今天的日期可以用公式突出显示:
=A1=TODAY()
编辑 2 After some trouble and learning on my part 突出周末的最佳公式如下:
=IF(CELL("format",A1)="D1",WEEKDAY(A1,2)>5,FALSE)
感谢@shrivallabha.redij 和@Foxfire And Burns And Burns
【讨论】:
这完全是不必要的 Plutian,你有Month()
,它更短更干净。
这确实是一种更简洁的方法,并且给出了相同的结果。我会更新我的答案。我忘记了Month()
,因为我更关心的是用条件格式来表达我的观点。
虽然 CF 是不稳定的,但我认为我仍然更喜欢它而不是通过 VBA 获得更静态的单元格颜色。 =)
@JvdV 同意,如果有的话,它应该更快,不需要在每个工作簿打开或更改时触发宏。以上是关于如何在日历中自动为当前月份的单元格着色的主要内容,如果未能解决你的问题,请参考以下文章
在EXCEL中插入日历控件后,如何添加到单元格上(带下拉箭头),点击后出现日历,选择一个日期自动填充并隐