我有一个很多人每天都使用的Excel工具 - 每个月他们都应该运行一个宏来将数据报告给中心点。
有没有办法可以在打开文档时调用这样的宏?
您将如何在Workbook_Open活动中执行此操作?你会选择它还是让用户没有选择(即在当天自动提交?)
这可能有助于我每月追逐人们
作为旁注,如果我向用户提供“选项” - 是否有一种不那么粗鲁的提醒方式?例如,如果answer = vbNo然后range(“A1”)=“1”然后在工作簿中打开if语句,直到他们按yes,将范围(“A1”)设置为0或类似?
由于
答案 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
这对用户来说是可选的,但每次打开图书时都会反复询问他们,直到他们提交该月为止。然后它会等到下个月再问一次。
在某一天使其自动提交的问题是,如果用户从未在当天打开工作簿,该怎么办?