【问题标题】:Checkbox to run only after the main macro is run复选框仅在主宏运行后运行
【发布时间】:2021-05-06 22:54:47
【问题描述】:

我有一个主表单(我想我可以这样称呼它),它将 Excel 工作表导出为 PDF。我想要一个复选框,如果选中,则允许用户在运行后打开 PDF 文件。目前,当单击复选框时,它会尝试运行复选框宏,但如果未选中,则会返回错误。这是代码:

Sub CheckBox5_Click()
    Dim ws As Worksheet
    Dim chckBox As CheckBox
    Set chckBox = Sheets("CompileSheet").CheckBoxes("CheckBox5")
    Set ws = ThisWorkbook.Sheets("Sheet2")
    If chckBox.Value = 1 Then
        ws.ExportAsFixedFormat Type:=xlTypePDF, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        OpenAfterPublish:=True
    Else
        ws.ExportAsFixedFormat Type:=xlTypePDF, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        OpenAfterPublish:=False
    End If
End Sub

不要犹豫,要求澄清。 谢谢。

【问题讨论】:

  • 不要将此代码附加到复选框。而是让通常创建 PDF 的例程在运行时查看复选框。让复选框成为一个被动开关,由其他代码检查。
  • Set ws = ThisWorkBook.Sheets("Sheet2") 在主宏生成之前没有 Sheet2。
  • 我看看能不能搞定。谢谢@RbarryYoung
  • 如何使复选框成为被动选项?我会使用Application.Caller吗?
  • @kaligirl "passive" 只是意味着它没有附加任何事件。当你点击它时什么都没有发生,它只是改变了它自己的状态,你的代码稍后会检查它。

标签: excel vba


【解决方案1】:

我明白了!

我不得不将复选框宏留空(我不知道你可以),并想出了如何找到框的名称,并且创建工作表后的以下代码对我有用:

If xlBook.Sheets("CompileSheet").Shapes("Check Box 5").OLEFormat.Object.Value = 1 Then
    ws.ExportAsFixedFormat Type:=xlTypePDF, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    OpenAfterPublish:=True
Else
    ws.ExportAsFixedFormat Type:=xlTypePDF, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    OpenAfterPublish:=False
End If

感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多