Excel VBA中的条件格式使用格式条件中的当前月份和年份值

在Excel 2013中,我试图有条件地格式化一系列代表澳大利亚date(dd.mm.yyyy)的值作为分隔符。 这些值全部格式化为常规。

我logging了一个macros来有条件地格式化所有包含特定文本“.04.2015”的值,但在vba中它有Selection.FormatConditions.Add Type:=xlTextString, String:="03.2015",我想要它使用当前Month (Now)'和当前年份Year(Now)

logging的代码:

 Sheets("MM All").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.FormatConditions.Add Type:=xlTextString, String:="03.2015", _ TextOperator:=xlContains Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Font .Bold = True .Italic = False .Color = -16711681 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False 

我正在尝试的(我刚刚包含了上面的相关代码)

 Sheets("MM All").Select Dim MNow As String Dim NMth As String Dim YNow As String MNow = Month(Now) NMth = Month(Now) + 1 YNow = Year(Now) Range("E2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select If (Unsure how to write) Mnow value is single digit Selection.FormatConditions.Add Type:=xlTextString, String:="0" & "(MNow)" & "." & "(YNow)", 

当Mnow和Nmth的值是两位数的时候,我也会包含IFs,我只是不会在string中连接多余的0。

任何关于如何使用Month(Now)和Year(Now)中的值并将它们连接到格式条件string的帮助将非常感谢。 我是VBA新手,试图感受我的方式。

这是我的尝试。 你可以试试。

 Public Sub test() Dim Mnow As String Dim Ynow As String Dim Finalstring As String Ynow = Year(Now) Mnow = Month(Now) + 1 If Mnow < 10 Then Mnow = "0" & Mnow Else Mnow = Mnow End If Finalstring = Mnow & "." & Ynow Sheets("MM All").Select Cells(1, 1).Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.FormatConditions.Add Type:=xlTextString, String:=Finalstring, _ TextOperator:=xlContains Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Font .Bold = True .Italic = False .Color = -16711681 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False End Sub 

你可以试试dateserial

 CDate(DateSerial(Year(Now), Month(Now), Day(Now))) 

然后按格式格式化

 Format(CDate(DateSerial(Year(Now), Month(Now), Day(Now))), "yyyy-mm-dd") Format(CDate(DateSerial(Year(Now), Month(Now), Day(Now))), "yyyy-mmmm-dd") Format(CDate(DateSerial(Year(Now), Month(Now), Day(Now))), "dd.mm.yy") 

格式化function区域设置的灵敏度也要注意

或者只是使用

 myday = Day(Now) mymonth = Month(Now) myyear = Year(Now) vardate = DateValue(myday & "/" & mymonth & "/" & myyear) 

对于那些不需要VBA的人来说,条件格式公式规则可以用于:

 =AND(1*MID(A1,FIND(".",A1)+1,2)=MONTH(NOW()),1*RIGHT(A1,4)=YEAR(NOW()))