我有一个Excel电子表格,当用户按下按钮时,该电子表格应保存在桌面上。为此,我使用以下VBA来检查桌面上是否已存在该文件:
Sub SaveFileOnDesktop()
Do
New_Filename = Application.InputBox("Please type in name for new file?")
If New_Filename = False Then Exit Sub
If Len(Dir("C:\Users\" & Environ("Username") & "\Desktop\" & New_Filename & ".xlsm")) = 1 _
Then MsgBox ("File alreday exists. Please change file name.")
Loop Until Len(Dir("C:\Users\" & Environ("Username") & "\Desktop\" & New_Filename & ".xlsm")) = 0 Or New_Filename = False
ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\" & New_Filename & ".xlsm"
MsgBox ("File saved successfully on desktop.")
End Sub
现在,当用户输入桌面上已经存在的文件名时,循环继续。
一旦用户输入其他名称,循环就会停止。到目前为止,此功能运行良好。
我唯一的问题是,如果用户在其中输入exisitng名称,则MsgBox ("File alreday exists. Please change file name.")
不会出现。
我必须更改代码中的什么才能显示消息框?
答案 0 :(得分:0)
该名称不能为True
,因此不会出现MsgBox
:
If Len(Dir("C:\Users\" & Environ("Username") & "\Desktop\" & New_Filename & ".xlsm")) = 1
如果文件存在,则长度至少为10+
,如果文件不存在,则长度为0
。 1
无法实现。
要使其显示,请输入:
If Len(Dir("C:\Users\" & Environ("Username") & "\Desktop\" & New_Filename & ".xlsm")) > 1
甚至:
If Len(Dir("C:\Users\" & Environ("Username") & "\Desktop\" & New_Filename & ".xlsm"))