EXCEL 整合VBA两段代码,实现两种功能,谢谢

现在单独使用都是正常,希望可以整合到一起,同时使用两个功能;先必须启用宏,然后再禁止Cut,谢谢

禁止使用Cut:
PrivateSub Workbook_Open() Application.OnKey "^{x}", "" Application.CommandBars(1).Controls(2).Controls(3).Enabled = False Application.CommandBars("Row").Controls(1).Enabled = False Application.CommandBars("Cell").Controls(1).Enabled = False Application.CommandBars("Column").Controls(1).Enabled = False Application.CellDragAndDrop = FalseEndSubPrivateSub Workbook_BeforeClose(Cancel AsBoolean) Application.OnKey "^{x}" Application.CommandBars(1).Controls(2).Controls(3).Enabled = True Application.CommandBars("Row").Controls(1).Enabled = True Application.CommandBars("Cell").Controls(1).Enabled = True Application.CommandBars("Column").Controls(1).Enabled = True Application.CellDragAndDrop = TrueEndSub

不启用宏,无法阅读文件:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Ws As Worksheet
Application.ScreenUpdating = False
For Each Ws In Worksheets
If Ws.Name <> ActiveSheet.Name Then Ws.Visible = xlSheetVeryHidden
Next Ws
ActiveWindow.DisplayWorkbookTabs = False
ActiveWindow.DisplayHeadings = False
ActiveSheet.Range("a1:a" & Rows.Count).EntireRow.Hidden = True
ThisWorkbook.Save
For Each w In Application.Workbooks
w.Saved = True
Next w
Application.ScreenUpdating = True
Application.Quit
End Sub

Private Sub Workbook_Open()
Dim Ws As Worksheet
Application.ScreenUpdating = False
For Each Ws In Worksheets
Ws.Visible = xlSheetVisible
Next Ws
ActiveWindow.DisplayWorkbookTabs = True
ActiveWindow.DisplayHeadings = True
ActiveSheet.Range("a1:a" & Rows.Count).EntireRow.Hidden = False
End Sub

把workbook_open的两段代码贴一起,workbook_beforeclose的两段代码贴一起就可以了。

启用宏显示sheet,并且屏蔽cut功能

Private Sub Workbook_Open()
Dim Ws As Worksheet
Application.ScreenUpdating = False
For Each Ws In Worksheets
    Ws.Visible = xlSheetVisible
Next Ws
ActiveWindow.DisplayWorkbookTabs = True
ActiveWindow.DisplayHeadings = True
ActiveSheet.Range("a1:a" & Rows.Count).EntireRow.Hidden = False

Application.OnKey "^{x}", ""  
Application.CommandBars(1).Controls(2).Controls(3).Enabled = False   
Application.CommandBars("Row").Controls(1).Enabled = False  
Application.CommandBars("Cell").Controls(1).Enabled = False 
Application.CommandBars("Column").Controls(1).Enabled = False  
Application.CellDragAndDrop = False
End Sub

第二,关闭文件前,恢复cut功能,隐藏sheet:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Ws As Worksheet

Application.OnKey "^{x}"   
Application.CommandBars(1).Controls(2).Controls(3).Enabled = True   
Application.CommandBars("Row").Controls(1).Enabled = True 
Application.CommandBars("Cell").Controls(1).Enabled = True  
Application.CommandBars("Column").Controls(1).Enabled = True   
Application.CellDragAndDrop = True

Application.ScreenUpdating = False
For Each Ws In Worksheets
    If Ws.Name <> ActiveSheet.Name Then Ws.Visible = xlSheetVeryHidden
Next Ws
ActiveWindow.DisplayWorkbookTabs = False
ActiveWindow.DisplayHeadings = False
ActiveSheet.Range("a1:a" & Rows.Count).EntireRow.Hidden = True
ThisWorkbook.Save
For Each w In Application.Workbooks
    w.Saved = True
Next w
Application.ScreenUpdating = True
Application.Quit
End Sub

温馨提示:答案为网友推荐,仅供参考
相似回答