使用excel vba工作簿停用事件

时间:2015-04-17 15:11:59

标签: excel vba events

我正试图阻止用户粘贴我正在开发的模板中的值之外的其他内容。我使用宏来始终粘贴工作表中的值(见下文)。当用户切换到另一个工作簿时,应禁用此宏。 问题是我在激活另一个工作簿时遇到错误91.

'模块中的宏

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

'此工作簿中的代码

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

1 个答案:

答案 0 :(得分:0)

您正在更改.MacroOptions wb上的MacroOptions作为属性不存在。 Application适用于Activate。使用与Private Sub Workbook_Deactivate() Application.MacroOptions Macro:="AlwaysPasteValues", Description:="AlwaysPasteValues", ShortcutKey:="" End Sub 相同的代码,您应该做得很好。

{{1}}