我已经获得了带有输入和更新表单信息的宏的Excel文档,该文档也用作月度数据库,您也可以在其中运行报告。
问题是,在使用文档时,有时会同时使用输入和更新选项,从而导致信息丢失。输入和输出都保存在宏的末尾,以最大限度地减少损失,但我想知道是否有任何在运行时检查是否有其他用户使用的宏,如果是这样,延迟下一个宏运行,直到另一个用户完成了吗?
答案 0 :(得分:2)
我能想到一种方法。逻辑上它应该工作。但是我没有测试它。
代码
Sub Sample()
Dim ws As Worksheet
ThisWorkbook.Save
Doevents
Set ws = ThisWorkbook.Sheets("HiddenSheetName")
If Len(Trim(ws.Range("A1").Value)) = 0 Then
ws.Range("A1").Value = "Macro Starts"
ThisWorkbook.Save
Doevents
'
'~~> Rest of your code goes here
'
ws.Range("A1").ClearContents
ThisWorkbook.Save
Doevents
Else
MsgBox "Please try after some time. There is a macro running... Blah Blah"
End If
End Sub
注意:代码运行后,您无法撤消更改,因为代码以编程方式保存文件。这些变化是永久性的。在未共享的文件中,您可以通过关闭文件而不保存并重新打开它来撤消。