簡體   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