我编写了一个代码,仅使用sheet1保存新文件。问题是保存文件时我选择了esc或在对话框中取消,新文件保存在目录中为FALSE,相反,如果我单击esc或取消,我不想保存文件
我试图放入一个if,例如:if thisfile =“ FALSE”然后退出sub;但这不起作用。
Sub test()
Dim thisfile As Variant
thisfile = Range("Y5").Value & Range("C16").Value & "_" & Range("K41").Value
Worksheets("Sale Dispo Approval").Copy
With ActiveWorkbook
.SaveAs Application.GetSaveAsFilename(InitialFileName:=thisfile, fileFilter:="Excel Files (*.xlsx), *.xlsx")
.Close savechanges:=False
End With
End Sub
我希望我单击“取消”,否则将不会保存任何新文件。
答案 0 :(得分:4)
问题是,您必须对从GetSaveAsFilename
获得的用户输入进行输入,然后将其直接输入SaveAs
而不进行验证。这是一种不好的做法,因为在使用之前,应先验证用户输入(以日文形式)。
您假设Application.GetSaveAsFilename method始终返回带有文件名的String
,但是根据文档,它返回的Variant
可以是String
(文件名)或Boolean
(如果取消)。
将您的.SaveAs
行更改为
Dim FileName As Variant 'cancel returns Boolean
FileName = Application.GetSaveAsFilename(InitialFileName:=thisfile, fileFilter:="Excel Files (*.xlsx), *.xlsx")
If FileName = False Then
Exit Sub 'exit if user pressed cancel
End If
.SaveAs FileName