使用宏更改工作表会导致工作表冻结

时间:2017-06-15 18:02:22

标签: excel vba excel-vba

在创建一些UserForms之后,我的用于更改工作表的宏不再起作用了。认为问题是UserForms没有正确卸载,但似乎并非如此。

当我点击按钮(位于自定义弹出菜单中)转到另一张表时,它可以正常工作,但表单已冻结,我无法滚动或突出显示。

但如果我通过点击选项卡更改工作表,那么一切都很好。因此看起来我的代码激活另一张表是错误的。

如果重要的话,我的Excel工作簿会有一些UserFormsWorksheet_ChangeWorksheet_SelectionChange个事件。

有更好的方法吗?显然有效的东西会在激活后冻结我的纸张吗?

  

表格转到代码:

Sub goto630()
Application.ScreenUpdating = False

Dim sht2 As Worksheet
Set sht2 = ThisWorkbook.Worksheets(2)
Dim sht3 As Worksheet
Set sht3 = ThisWorkbook.Worksheets(3)

sht3.Activate
sht3.Protect _
        DrawingObjects:=False, _
        Contents:=True, _
        Scenarios:=False, _
        UserInterFaceOnly:=True, _
        AllowFormattingCells:=True

sht2.Visible = True
sht3.Visible = True

On Error GoTo 0

    ActiveWindow.Zoom = 90
    ActiveWindow.DisplayHeadings = True
    ActiveWindow.DisplayHorizontalScrollBar = True
    ActiveWindow.DisplayVerticalScrollBar = True
    Application.DisplayFormulaBar = True
    sht3.DisplayPageBreaks = False

ThisWorkbook.Worksheets(1).Visible = False
ThisWorkbook.Worksheets(4).Visible = False
ThisWorkbook.Worksheets(5).Visible = False
ThisWorkbook.Worksheets(6).Visible = False
ThisWorkbook.Worksheets(7).Visible = False
ThisWorkbook.Worksheets(8).Visible = False

Set sht2 = Nothing
Set sht3 = Nothing
Application.ScreenUpdating = True
End Sub
  

UserForm代码:

Private Sub UserForm_Click()
    Application.OnTime Now + TimeValue("00:00:01"), "Finish"
    Unload Me
    Call Module2.ScreenRefresh
    Exit Sub
End Sub

ScreenRefresh模块只是在Application.ScreenUpdating = True读取了同样的问题,如果ScreenUpdating在另一个模块中,那么当它被调用时它将解决冻结问题。

完成模块在UserForm关闭后再次激活工作表(也称为帮助冻结问题)。

在允许我滚动之前,似乎Excel正在等待我单击一个单元格。我怎样才能解决这个问题?

感谢您的帮助:)

0 个答案:

没有答案