【问题标题】:Runtime error 424 VBA excel运行时错误 424 VBA excel
【发布时间】:2014-05-22 15:21:04
【问题描述】:

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

我的代码在 VB 编辑器中位于 Sheet1 对象中时运行良好。但是,我希望它在 excel open 上运行,所以我将它粘贴到 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

【问题讨论】:

  • 我们大多数人都没有记住 Excel 错误代码,因此错误文本也会有所帮助。
  • 道歉运行时错误'424'需要对象
  • 什么是 Labelbatch 和 LabelExpiry,它们在哪里?

标签: excel vba


【解决方案1】:

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

thisworkbook.worksheets("Sheet1").labelbatch

参考他们。

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

这确实会延长对对象的引用,但您始终可以使用With...End With 来提高可读性并节省输入时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多