两个消息框返回

时间:2015-11-06 14:39:04

标签: excel

请帮我编辑此代码。我有一个excel工作簿,我需要将其保存在我选择的文件夹中作为xlsm文件和PDF。在我的电子表格中添加需要输入的所有信息后,为了使用范围作为参考并选择文件保存的文件夹,然后选择消息框" Kon nie document stoor nie。"弹出。如果只成功保存消息框"复制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

1 个答案:

答案 0 :(得分:0)

如果我正确地阅读了您的问题,那么您的问题就是您的宏只会显示MsgBox为“Kon nie dokumente stoor nie”。

假设这是对的,因为你的VBA处于混乱的一面,所以有点难以分辨出问题是什么。最好的猜测是,由于您从未设置ws,因此保存工作表的尝试会调用errHandler

在这种情况下你想要做的一些清理:

  1. 您应该声明并使用FileSaveName作为字符串。如果有任何方法将它设置为布尔值,那么奇怪的东西似乎正在发生(至少基于你到目前为止告诉我们的内容)。
  2. 摆脱Exit Handler。唯一可以使用的地方是ErrHandler。如果发生这种情况,代码末尾的End Sub会很好地解决问题,根本不需要使用Exit Sub
  3. 在您的第一个End If
  4. 之后添加If
  5. 使用缩进来显示哪些代码依赖于If语句
  6. 详细说明我的答案;考虑到上述所有情况,我有点在黑暗中刺伤,但看起来myFile永远不应该是"False"if应该将myFile强制转换为字符串,并且由于变量从未设置,因此它的值为"")。因此,在这种情况下,使用了将ws保存为PDF的尝试,并且因为ws也从未设置而失败,这意味着Excel不知道您要保存的是什么。因此,你被踢到了errHandler

    希望有所帮助。如果没有,请详细说明您所看到的行为,如果可能,请使用已清理的代码更新原始问题。