早上好,
我有以下代码来自定义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 :(得分:1)
您可以使用ID 293
搜索删除控件Application.CommandBars("Row").FindControl(ID:=293)
即。在代码中将.Controls("Delete")
替换为.FindControl(ID:=293)
。
Here是一个包含Office 2000控件ID的列表,供参考。因此,ID应至少与Office 2000到Office 2016兼容。
答案 1 :(得分:0)
奇怪按钮的名称会自行更改。从“删除”到“$删除”到“$删除...”。所以我只是编写代码来检测按钮的名称,然后再引用它。