循环中没有保存文件的消息框

时间:2018-07-16 09:35:45

标签: excel excel-vba

我有一个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.")不会出现。

我必须更改代码中的什么才能显示消息框?

1 个答案:

答案 0 :(得分:0)

该名称不能为True,因此不会出现MsgBox

If Len(Dir("C:\Users\" & Environ("Username") & "\Desktop\" & New_Filename & ".xlsm")) = 1

如果文件存在,则长度至少为10+,如果文件不存在,则长度为01无法实现。


要使其显示,请输入:

If Len(Dir("C:\Users\" & Environ("Username") & "\Desktop\" & New_Filename & ".xlsm")) > 1

甚至:

If Len(Dir("C:\Users\" & Environ("Username") & "\Desktop\" & New_Filename & ".xlsm"))