自动提醒本月的第一个工作日

时间:2016-02-02 15:37:17

标签: excel vba

我有一个很多人每天都使用的Excel工具 - 每个月他们都应该运行一个宏来将数据报告给中心点。

有没有办法可以在打开文档时调用这样的宏?

您将如何在Workbook_Open活动中执行此操作?你会选择它还是让用户没有选择(即在当天自动提交?)

这可能有助于我每月追逐人们

作为旁注,如果我向用户提供“选项” - 是否有一种不那么粗鲁的提醒方式?例如,如果answer = vbNo然后range(“A1”)=“1”然后在工作簿中打开if语句,直到他们按yes,将范围(“A1”)设置为0或类似?

由于

1 个答案:

答案 0 :(得分:1)

你正走在正确的轨道上。

在工作簿中创建一个reference工作表,其中包含A1:A12中列出的月末日期,然后将此代码放在Workbook_Open事件中。

Private Sub Workbook_Open()

Dim dDate as Date

dDate = Application.WorksheetFunction.EoMonth(Date, 0)

With Worksheets("reference")

    Dim rFound As Range
    Set rFound = .Range("A1:A12").Find(dDate, lookat:=xlWhole, LookIn:=xlValues)

    If Not rFound Is Nothing Then

        If rFound.Offset(, 1) = 0 Then

            Dim ret As Variant
            ret = MsgBox("Would you like to submit data now?", vbYesNo)
            If ret = vbYes Then

                'run macro to submit data
                rFound.Offset(, 1) = 1
                'you may want to set this cell to 1 also if the user submits data manually so it knows for next time

            Else

                'set to zero to check for next time
                rFound.Offset(, 1) = 0

            End If

        End If

    End If

End With

End Sub

这对用户来说是可选的,但每次打开图书时都会反复询问他们,直到他们提交该月为止。然后它会等到下个月再问一次。

在某一天使其自动提交的问题是,如果用户从未在当天打开工作簿,该怎么办?