繁体   English   中英

运行时错误424 VBA excel

[英]Runtime error 424 VBA excel

我已经成功创建了一个项目脚本,该脚本会引发一些对话以获取信息,将其放在工作表(activex框)上然后打印。

使用VB编辑器在Sheet1对象中找到代码时,我的代码运行正常。 但是,我希望它在excel上运行,所以我将它粘贴到workbook_open()thisworkbook对象中,但没有任何效果。

任何人都可以向我解释如何让这个脚本在excel打开时运行,或者在从workbook_open()运行时停止接收424错误?

调试器不喜欢我labelbatchlabelexpiry对象(但只有在当thisworkbook ),但另有正常工作。

Private Sub Workbook_Open()

ActiveWorkbook.Sheets("sheet1").Activate

'Clears label fields prior to data entry
labelbatch.Caption = ""
LabelExpiry.Caption = ""


'Auto input of batch code into batch field using input text.
BatchNo = InputBox("Enter batch code", " ")
labelbatch.Caption = BatchNo

'Auto input of expiry date into expiry field using input text.
ExpiryDate = InputBox("Enter expiry date", " ")
LabelExpiry.Caption = ExpiryDate

'Show print dialog box
Application.Dialogs(xlDialogPrint).Show

'Close without saving changes
ActiveWorkbook.Close False

  End Sub

假设labelbatchlabelExpiry是工作表上的对象,当代码移动到ThisWorkbook时,VBA不知道在哪里查找这些对象。 使用例如

thisworkbook.worksheets("Sheet1").labelbatch

引用它们。

当您使用不包含其父项的方法或属性名称时,VBA将抛出错误或将使用默认值,具体取决于上下文。 例如,对于Cells()Range()等,默认为Application.ActiveSheet 这通常是有风险的:如果您以后更改代码(或者即使用户在代码运行时切换工作表),也很难确定活动工作表是什么。 最好指定您想要的工作表。

这样可以更长时间地引用对象,但您始终可以使用With...End With来帮助提高可读性并节省输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM