長時間潛伏者,第一次海報。這個錯誤一直困擾着我好幾個星期,所以我不得不求助於尋求幫助。錯誤424對象需要結束Sub
我有一個excel添加,我已經開發。添加有一個自定義右鍵單擊菜單,取代了標準的Excel右鍵單擊菜單SheetBeforeRightClick。這工作得很好,當你刪除你右鍵點擊的行時會被刪除。
例如。您右鍵單擊「主要項目」工作表上的單元格E11以調出菜單。 菜單代碼:
Private Sub SheetBeforeRightClick(ByVal sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim ClstrCmd As CommandBar
'Display cluster display option commands
On Error GoTo connerr
If ActiveSheet.Name = "Control" Then
Cancel = True
Set ClstrCmd = FinanceCreateSubMenuControlNew
ClstrCmd.ShowPopup
ElseIf ActiveSheet.Name = "Input" Then
Cancel = True
Set ClstrCmd = FinanceCreateSubMenuInputNew
ClstrCmd.ShowPopup
ElseIf ActiveSheet.Name = "Major Projects" Or ActiveSheet.Name = "Projects GP Report" Then
Cancel = True
Set ClstrCmd = FinanceCreateSubMenuProjectsNew
ClstrCmd.ShowPopup
Else
'No Menu for this sheet
End If
connerr:
End Sub
Function FinanceCreateSubMenuProjectsNew() As CommandBar
''Create some objects
Dim cb As CommandBar
Dim cbc As CommandBarControl
''Ensure our popup menu does not exist
FinanceDeleteCommandBar "FINANCE_PROJECTS"
''Add our popup menu to the CommandBars collection
Set cb = CommandBars.Add(Name:="FINANCE_PROJECTS", Position:=msoBarPopup, MenuBar:=False, Temporary:=False)
Set cbc = cb.Controls.Add
With cbc
.Caption = "Insert Seperator Row"
.OnAction = "InsertMajorProjectsSeperator"
End With
Set cbc = cb.Controls.Add
With cbc
.Caption = "Delete Seperator Row"
.OnAction = "DeleteMajorProjectsSeperator"
End With
Set FinanceCreateSubMenuProjectsNew = cb
End Function
您選擇我的自定義菜單「刪除行」。這將調用Procedure Deleterow。
Sub DeleteRow()
Deleterow = ActiveCell.Row
If ActiveWorkbook.Worksheets("Major Projects").Range("A" & Deleterow) = "x" Then
ActiveWorkbook.Worksheets("Major Projects").Rows(Deleterow).EntireRow.Delete
Else
MsgBox "You haven't selected a seperator to delete"
End If
End Sub
刪除所選行。一旦該行被刪除,代碼就會退回到FinanceCreateSubMenuProjectsNew函數。然後到SheetBeforeRightClick過程完成。它在SheetBeforeRightClick過程中到達End Sub並給出了一個424 - Object requred錯誤。沒有調試選項,並且我不能錯誤地捕獲它,因爲它在End Sub之後出現錯誤。我只能假設它,因爲您右鍵單擊的單元格已被刪除,並且系統已丟失目標。如果我輸入 msgbox Target.address 我可能會導致該行出現錯誤。如果我 設置Target = activecell 之前msgbox修復該錯誤,但它仍然錯誤End Sub。是否有我需要重置的系統目標類型的變量?
即使放入 表(「主要項目」)。範圍(「a1」)。select 沒有幫助。
因爲代碼錯誤,Addin卸載。那麼用戶需要重新啓動插件,然後才能再次使用任何功能。
真正的踢球者是,一旦我重新啓動插件,我可以刪除行而不會出現錯誤。再次得到錯誤的唯一方法是完全關閉Excel並重新開始。只關閉文件不會導致錯誤重新生成。
如果您的意圖是完全替換右鍵單擊菜單,請嘗試在事件底部放置'Cancel = True',以便始終取消它。我沒有詳細看過(現在已經很晚了),但我會猜測你的事件會被連續調用兩次。 –
也禁用你的錯誤處理 - 你需要看到錯誤。無論如何,有一個不處理錯誤的處理程序是一個v.bad的想法。 –
感謝您的回覆。我在我的實時代碼中正確處理了錯誤,但是僅僅是爲了這個網站而去掉了錯誤(或者它將會是1000行的長度)。禁用錯誤處理不會執行任何操作,因爲錯誤發生在(後?)End Sub上。所有代碼都是在那時完成的。它的excel有一個SystemTarget變量,它被設置爲你點擊的單元格。如果您刪除單元格,則會丟失值和錯誤。但之後的工作很好。它是一個Bizzare。我添加了額外的cancel = true。但它並沒有阻止這個錯誤。 – Milesy