我有一些VBA代码可以将电子表格保存在给定的文件名下。每当我保存它时,我都会收到一条关于“重大功能丧失”的警告消息,因为表格中有数据验证(尽管在我保存工作表后验证仍然有效)。
我想抑制此警告,但我认为不应该使用
Application.DisplayAlerts=false
mySheet.saveAs myFilename
Application.DisplayAlerts=true
因为我不想覆盖告诉用户已存在此名称的文件的警告,因为我想保护用户不会意外地保存文件)。如何指定我只想覆盖“功能丧失”警告?
编辑:我看到了一个类似问题的答案,建议以不同的格式保存工作簿。这在这里不起作用,因为我正在Excel 2007中开发,但试图容纳拥有Excel 2003的用户。答案 0 :(得分:2)
您可以捕获保存事件,然后提示用户输入信息。这是一个快速的,未经测试的例子,我为你拼凑:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim iAnswer As Integer
Dim wkb As Workbook
Dim oSaveAs As FileDialog
Set wkb = ActiveWorkbook
Application.DisplayAlerts = False
If gbUserGenerated Then
iAnswer = MsgBox("Would you like to save over previous workbook?" _
, vbYesNo, "Workbook Already Exists")
If iAnswer = 6 Then
wkb.Save
Else
Set oSaveAs = Application.FileDialog(msoFileDialogSaveAs)
oSaveAs.Show
End If
Else
Set oSaveAs = Application.FileDialog(msoFileDialogSaveAs)
oSaveAs.Show
End If
Application.DisplayAlerts = true
End Sub
gbUserGenerated只是一个全局变量(布尔值),告诉您是否创建了工作簿,或者是否是用户(如果用户总是创建工作簿,那么您根本不需要它)。
将代码放入VBE中的Microsoft Excel Object文件夹中,将其放入“This Workbook”模块中。
要了解有关活动的更多信息,请访问here: http://www.cpearson.com/excel/Events.aspx