逐月检查

时间:2015-05-17 11:40:52

标签: excel vba excel-vba

Sub IMPORT_MSG()
    Dim strMonth As String
    Dim strSheet As String
    strSheet = ActiveSheet.Name
    strMonth = Format(Date, ("mmmm" & "_yy"))
    If strSheet < strMonth Then
        MsgBox "test1"
    ElseIf strSheet >= strMonth Then
        MsgBox "test2"
    End if
End sub

我每月有12张名字,如(March_15,April_15),依此类推。我已经制作了这段代码来检查活动工作表是否在本月之前弹出一个messge1,以便显示message2。 问题是它不能正常工作。我得到的结果如下: 如果message1,March_15会给message2 April_15给message1(正常) 5月15日,9月15日,oktomber_15&amp; 11月15日给出message2(正常) 6月15日,7月15日,8月15日&amp;如果message2

,则December_15会给message1

1 个答案:

答案 0 :(得分:1)

试试这个

Sub IMPORT_MSG()
    Dim Dt$, i&: i = 1
    Dim Dic As Object: Set Dic = CreateObject("Scripting.Dictionary")
    Dic.CompareMode = vbTextCompare
    While i <= 12
        Dic.Add MonthName(i), i: i = i + 1
    Wend
    Dt = Left(ActiveSheet.Name, WorksheetFunction.Search("_", ActiveSheet.Name) - 1)
    If Dic(Dt) < Month(Date) Then
        MsgBox "test1"
    Else
        MsgBox "test2"
    End If
End Sub