我目前正在做一个VBA代码,当Excel文件关闭时需要隐藏一些工作表,几乎一切都正常工作,当我执行以下步骤时:
问题是我隐藏了工作表,但由于我不保存文件(因为我不想保存在步骤3中所做的更改),因此当我重新打开文件时,工作表不会被隐藏。我无法使用Workbook_open方法执行此操作,因为它不允许(在我的项目中)。
为此,我将重写beforeclose方法,如下所示:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Msg As String
Dim ireply As Integer
If Not Me.Saved Then
Msg = "Do you want to save the file?"
ireply = MsgBox(Msg, vbQuestion + vbYesNoCancel)
Select Case ireply
Case vbYes
Call hidesheets
Me.Save
Case vbNo
Me.Saved = True
Application.Quit
Case vbCancel
Cancel = True
Exit Sub
End Select
Else
Call hidesheets
Me.Save
End If
End Sub
Sub hidesheets()
ThisWorkbook.Sheets("Cars").Visible = xlVeryHidden
ThisWorkbook.Sheets("Brands").Visible = xlVeryHidden
ThisWorkbook.Sheets("Models").Visible = xlVeryHidden
ThisWorkbook.Sheets("Price").Visible = xlVeryHidden
End Sub
我的问题是,是否可以保存隐藏的纸张配置/设置而不保存用户更改/插入的信息/数据?
PS:当我保存文件并进行任何更改时,代码工作正常,即隐藏工作表。
提前谢谢大家 此致
答案 0 :(得分:0)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ThisWorkbook.Sheets("Cars").Visible = xlVeryHidden
ThisWorkbook.Sheets("Brands").Visible = xlVeryHidden
ThisWorkbook.Sheets("Models").Visible = xlVeryHidden
ThisWorkbook.Sheets("Price").Visible = xlVeryHidden
End Sub
答案 1 :(得分:0)
你必须采取相反的方式
1)将您的工作簿设置为默认情况下隐藏的那四张
将它们设置为这样,然后保存工作簿以使其假定其默认配置
2)当你打开它时,你可以看到那些纸张
Private Sub Workbook_Open()
ThisWorkbook.Sheets("Cars").Visible = True
ThisWorkbook.Sheets("Brands").Visible = True
ThisWorkbook.Sheets("Models").Visible = True
ThisWorkbook.Sheets("Price").Visible = True
End Sub
3)关闭它时,将这些纸张设置为不可见
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Your code to be processed upon closing the sheet
'...
Call hidesheets '<--| hide your sheets
End Sub