我一直在保护Excel文档不被编辑,因为用户不断破坏它。虽然这个Excel文档不应该能够被打破,这容易摆在首位;修理它超出了我的能力范围。我只是来提供一个临时的解决方案。
问题当用户执行刷新宏时,会将工作表锁定为fast;反过来,它给出了一个错误,它不能进行更改,因为单元格或图表是受保护的。奇怪的是,锁定工作表的模块只在最后执行。有人知道为什么会这样吗?
我的密码
Sub Verversen()
'
' Verversen Macro
'
Call Module11.unlockcells
Range("J12").Select
ActiveWorkbook.RefreshAll
ActiveWorkbook.Worksheets("Batch Checker").ListObjects("AllStockSQL").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Batch Checker").ListObjects("AllStockSQL").Sort. _
SortFields.Add Key:=Range("AllStockSQL[[#Headers],[#Data],[Batch]]"), SortOn _
:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Batch Checker").ListObjects("AllStockSQL").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Call Module12.Refresh_All_Data_Connections
' Range("G31").Select
ActiveSheet.PivotTables("PivotTable4").PivotCache.Refresh
ActiveSheet.PivotTables("PivotTable5").PivotCache.Refresh
' ActiveWorkbook.RefreshAll
Call Module9.lockcells
End Sub
模块9
Public Sub lockcells()
Worksheets("Batch Checker").Range("F4:N200").Locked = True
ActiveSheet.Protect Password:="temp", UserInterfaceOnly:=True, AllowUsingPivotTables:=True
End Sub
模块11
Public Sub unlockcells()
ActiveSheet.UNprotect Password:="temp"
Worksheets("Batch Checker").Range("F4:N200").Locked = False
End Sub
我试过设置一个等待计时器;我已经关闭了后台刷新,除了在“全部刷新”上的“刷新此连接”选项;我以前试过放DoEvent;我试过创建不同的模块,我会调用在没有工作,可能我忽略了一些简单的,因为我是一个相当的VBA新手。
1条答案
按热度按时间e4yzc0pl1#
解决方案由Emilio Silva提供。
在锁定模块锁定之前,我将Application.CalculateFull和Application. CalculateUntilAsyncQueriesDone放入其中。
模块9