2016-11-24 1 views
0

Bonjour,CommandBars ("Row"). Contrôles ("Supprimer"). OnAction ne fonctionne plus

je le code suivant pour personnaliser le menu contextuel dans Excel. Il est stocké dans "ThisWorkbook". ArchiveRow sub est stocké dans Module1. Il était tout fonctionne bien au début, puis il a cessé de fonctionner complètement, et donne un Run-Time

Erreur 5: appel de procédure incorrect ou argument.

Une minute ça marche, l'autre ça ne marche pas. Toute aide est appréciée.

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 

La sous-chaîne suivante est appelée onaction. Je ne pense pas que le problème est là. Commenter tous les codes commençant par .Controls("Delete") fonctionnera. fonctionnera. Il semble que toute référence à ce bouton provoque l'erreur.

+0

êtes-vous sûr de son appelé « OnAction »? – user1

+0

Et je ne pense pas que ArchiveRow devrait être dans les citations – user1

+0

Oui. Il a l'habitude de travailler. Même la désactivation ou la suppression du bouton "Supprimer" donne maintenant la même erreur. – Kelaref

Répondre

1

Vous pouvez rechercher le contrôle de suppression en utilisant l'ID 293

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

dire avec .FindControl(ID:=293).Controls("Delete") remplacer dans votre code.

Here est une liste avec les ID de contrôle pour Office 2000 pour référence. Ainsi, l'ID doit être compatible au moins avec Office 2000 à Office 2016.

+0

Vous êtes génial! – Kelaref

0

Le nom du Bizarrement bouton passe par lui-même. De "Supprimer" À "$ Supprimer" à "$ Supprimer ...". Donc j'ai juste écrit le code pour détecter le nom du bouton avant de le référencer.