[英]Program returns message box again and again if 'no' is pressed in message box?
[英]Two message box returns
請幫助我編輯此代碼。 我有一個Excel工作簿,我需要將其保存為xlsm文件和PDF格式的文件夾。 在我的電子表格上添加了所有需要輸入的信息以使用范圍作為參考並選擇文件保存的文件夾之后,然后出現了消息框“ Kon nie document stoor nie”。 彈出。 如果保存成功,則僅顯示消息框“ Copy Gemaak”! 謝謝您的幫助!
Sub Combined()
Dim ws As Worksheet
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
Dim fileSaveName As String
On Error GoTo errHandler
fileSaveName = Application.GetSaveAsFilename("Kwotasie - " & Range("H14").Value)
If VarType(fileSaveName) = vbBoolean Then Exit Sub
' Save as XLSM
ActiveWorkbook.SaveAs Filename:=fileSaveName & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
' Save as PDF
Range("a1:I51").ExportAsFixedFormat Type:=xlTypePDF, Filename:=fileSaveName _
, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
If myFile <> "False" Then
ws.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=myFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
MsgBox "Copy gemaak."
End If
exitHandler:
Exit Sub
errHandler:
MsgBox "Kon nie dokumente stoor nie."
Resume exitHandler
End Sub
如果我正確地閱讀了您的問題,則可能是您的宏僅顯示了“ Kon nie dokumente stoor nie”的MsgBox
。
假設是正確的,由於VBA處於混亂狀態,很難說出問題出在哪里。 最好的猜測是,由於您從未設置過ws
,因此保存工作表的嘗試將調用errHandler
。
在這種情況下,您需要進行一些清理:
FileSaveName
並將其用作字符串。 如果有任何方法將其設置為布爾值,似乎會發生一些奇怪的事情(至少基於到目前為止您告訴我們的內容)。 Exit Handler
。 它使用的唯一地方是如果將其放置到ErrHandler
。 如果發生這種情況,則在代碼末尾的End Sub
可以很好地關閉所有內容,根本不需要使用Exit Sub
。 End If
之后添加End If
If
If
語句 詳細說明我的答案; 鑒於以上所有內容,我有點在暗中myFile
刺,但看起來myFile
永遠不應為"False"
( if
應該將myFile
轉換為字符串,並且由於從未設置變量,因此其值為""
)。 因此,在這種情況下,將使用將ws
另存為PDF的嘗試,但由於也從未設置過ws
,因此嘗試失敗,這意味着Excel不知道您要保存的內容。 因此,您被踢到errHandler
。
希望能有所幫助。 如果不是,請詳細說明您所看到的行為,並在可能的情況下,使用清理后的代碼更新原始問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.