2016-11-24 120 views
0

早上好,CommandBars(「Row」)。Controls(「Delete」)。OnAction不再工作

我有以下代碼來自定義Excel中的右鍵單擊菜單。 它存儲在「ThisWorkbook」ArchiveRow sub存儲在Module1。這是所有在第一次運行良好,那麼就完全停止工作,並給出了一個運行時

錯誤5:無效的過程調用或參數。

一分鐘它的工作,另一個不是。任何幫助表示讚賞。

Private Sub Workbook_Open() 

    Application.CommandBars("Row").Reset 
    Application.CommandBars("Column").Reset 
    Application.CommandBars("Cell").Reset 

    With Application.CommandBars("Row") 
     .Controls("Delete").OnAction = "ArchiveRow" 
     .Controls("Cut").Enabled = False 
     .Controls("Hide").Enabled = False 
     .Controls("Unhide").Enabled = False 
     .Controls("Clear Contents").Enabled = False 
     .Controls("Paste").Enabled = False 
    End With 

    With Application.CommandBars("Cell") 
     .Controls("Delete").Enabled = False 
     .Controls("Cut").Enabled = False 
    End With 

    With Application.CommandBars("Column") 
     .Controls("Delete").Enabled = False 
     .Controls("Cut").Enabled = False 
    End With 

End Sub 

以下子被稱爲onaction。我不認爲問題在那裏。

Public Sub ArchiveRow() 
    Application.EnableEvents = False 
    Selection.Cut 
    Sheets("DeletedList").Rows("3:3").Insert Shift:=xlDown 
    Selection.Delete 
    Application.EnableEvents = True 
End Sub 

註釋掉所有以.Controls("Delete")開頭的代碼都可以。 似乎任何對此按鈕的引用都會導致錯誤。

+0

您確定其名爲「OnAction」? – user1

+0

而我不認爲ArchiveRow應在報價 – user1

+0

是的。它曾經工作。即使禁用或刪除「刪除」按鈕現在也會出現相同的錯誤。 – Kelaref

回答

1

您可以使用ID搜索刪除控制293

Application.CommandBars("Row").FindControl(ID:=293) 

即在你的代碼替換.FindControl(ID:=293).Controls("Delete")

Here是一個帶有用於參考的Office 2000控件ID的列表。因此,該ID至少應與Office 2000至Office 2016兼容。

+0

你太棒了! – Kelaref

0

奇怪按鈕的名稱會自行更改。從「刪除」到「$刪除」到「$刪除...」。所以我只是編寫代碼來檢測引用它之前的按鈕的名稱。