gpt4 book ai didi

vba - Application.ScreenUpdating 不会更改为 false

转载 作者:行者123 更新时间:2023-12-03 02:07:22 26 4
gpt4 key购买 nike

我对 VBA 还很陌生,但我通过阅读这些论坛找到了解决方法。我从来没有遇到过 Application.ScreenUpdating 不起作用的问题,并且在网上研究后,我找不到问题的答案。

我在 Excel 中创建了一个每日检查表应用程序,它在每日检查表中提供了月 View 。任务按行排列,您只需为日历上当天的该任务选择是、否或不适用。您可以保存 list ,并将信息复制到单独选项卡中的数据表中。一切都很完美,除了保存信息时,Application.Screenupdating 不起作用,并且用户最终会看到数据表和日历 View 之间的闪烁和来回跳转。

关于为什么 Application.ScreenUpdating 没有更改为 false 的任何想法或指导?我尝试过将其移动到不同的区域,但似乎没有任何效果。

这是保存 list 子项:

Sub Save_Checklist()

Dim Checklist_Date
Dim Completed As Long
Dim Left_to_Complete As Long
Dim Database_Date As Range
Dim Database_Row As Long
Dim bScrUpdate

bScrUpdate = Application.ScreenUpdating
If bScrUpdate = True Then Application.ScreenUpdating = False

Worksheets("Database").Unprotect Password:="youngC"

If MsgBox("This button will save this month's checklist data into the database. All previous information will be overwritten. Would you like to continue?", vbYesNoCancel, "Reset the Calender") = vbYes Then

Checklist_Date = Worksheets("Daily Checklist").Range("E4").Value
Add_to = Worksheets("Daily Checklist").Range("AL1").Value
Range("E55").Select
ActiveCell.Resize(2, Add_to).Select
Selection.Copy

On Error Resume Next
With Worksheets("Database").Activate
Range("A1:A366").Select
Selection.Find(What:=Checklist_Date, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Select
On Error GoTo 0
If Not Database_Date Is Nothing Then Application.Goto Database_Date, True
End With

Selection.Offset(0, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True


Worksheets("Database").Protect Password:="youngC"

Else
MsgBox ("Please be sure all information is correct before saving it.")
End If

If Not Application.ScreenUpdating = bScrUpdate _
Then Application.ScreenUpdating = bScrUpdate

End Sub

这是我在打开工作簿时运行的代码(我在“将任务添加到月份日历”工作表中进行了分组):

Private Sub Workbook_Open()
Worksheets("Main Menu").Activate
With Worksheets("Add Tasks to Month's Calendars")
.EnableOutlining = True
.Protect Password:="youngC", _
Contents:=True, UserInterfaceOnly:=True
End With
End Sub

任何帮助都将不胜感激。

谢谢,克里斯

最佳答案

就我个人而言,我只是将 screenupdating 属性设置为 false 而不进行检查,一旦 VBA 完成运行,屏幕就会正常更新。

此外,我认为问题在于,打开工作表时运行的第二段代码不会将 screenupdating 变为 false,因此您将看到您描述的所有 Action 。 Excel 不记得屏幕更新被之前的宏设置为 false,即使它执行了代码,您仍然会将其重新打开。您应该可以通过在第一行将 screenupdating 设置为 false 来解决此问题,修改如下所示。

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Worksheets("Main Menu").Activate
With Worksheets("Add Tasks to Month's Calendars")
.EnableOutlining = True
.Protect Password:="youngC", _
Contents:=True, UserInterfaceOnly:=True
End With
End Sub

关于vba - Application.ScreenUpdating 不会更改为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18422346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com