/ / utilise l’événement de désactivation du classeur vba excel - excel, vba, events

utiliser le programme de désactivation excel du classeur vba - excel, vba, events

J'essaie d'empêcher les utilisateurs de coller d'autresLes choses que les valeurs du modèle que je suis en train de développer. J’utilise une macro pour toujours coller les valeurs dans la feuille de calcul (voir ci-dessous). Lorsque les utilisateurs basculent vers un autre classeur, cette macro doit être désactivée. Le problème est que je reçois l'erreur 91 lors de l'activation d'un autre classeur.

"la macro dans un module

Sub AlwaysPasteValues()
Selection.PasteSpecial Paste:=xlPasteValues
End Sub

"le code dans ce classeur

Public wb As Workbook

Private Sub Workbook_Activate()
Application.MacroOptions Macro:="AlwaysPasteValues", Description:="AlwaysPasteValues", ShortcutKey:="v"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set wb = Nothing
End Sub

Private Sub Workbook_Deactivate()
With wb
.MacroOptions Macro:="AlwaysPasteValues", Description:="AlwaysPasteValues", ShortcutKey:=""
End With
End Sub

Private Sub Workbook_Open()
Set wb = ThisWorkbook
End Sub

Réponses:

0 pour la réponse № 1

Vous changez .MacroOptions sur wb qui n'existe pas en tant que propriété. MacroOptions est pour le Application. Utilisez le même code que le Activate et vous devriez être bon.

Private Sub Workbook_Deactivate()

Application.MacroOptions Macro:="AlwaysPasteValues", Description:="AlwaysPasteValues", ShortcutKey:=""

End Sub