Excel 复选框仅在运行主宏后运行

Excel 复选框仅在运行主宏后运行,excel,vba,Excel,Vba,我有一个主窗体(我想我可以这样称呼它),它将Excel表格导出到PDF。我想有一个复选框,允许用户在运行后打开PDF文件,如果它被选中。此时,当单击复选框时,它会尝试运行复选框宏,但如果未选中,则返回错误。代码如下: Sub CheckBox5_Click() Dim ws As Worksheet Dim chckBox As CheckBox Set chckBox = Sheets("CompileSheet").CheckBoxes("

我有一个主窗体(我想我可以这样称呼它),它将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
请不要犹豫要求澄清。 谢谢。

我知道了

我必须将复选框宏保留为空(我不知道您可以这样做),并找出如何查找该框的名称,以及创建工作表后的以下代码是否适用于我:

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

谢谢大家的帮助

不要将此代码附加到复选框。而是让通常创建PDF的例程在运行时查看复选框。只需将复选框设为被动开关,由其他代码检查即可。
Set ws=thishworkbook.Sheets(“Sheet2”)
在主宏执行之前,没有Sheet2。我会看看是否能找到答案。谢谢@rbarryyoungh如何将复选框设为被动复选框?我会使用
Application.Caller
?@kaligirl“被动”只是表示没有附加任何事件。当您单击它时,不会发生任何事情,它只会更改它自己的状态,您的代码稍后会检查它。