使用excel vba工作簿停用事件
我试图阻止用户在我正在开发的模板中粘贴除值以外的其他内容。我使用宏始终在工作表中粘贴值,请参见下文。当用户切换到其他工作簿时,应禁用此宏。 问题是激活另一个工作簿时出现错误91 '模块中的宏使用excel vba工作簿停用事件,excel,vba,events,Excel,Vba,Events,我试图阻止用户在我正在开发的模板中粘贴除值以外的其他内容。我使用宏始终在工作表中粘贴值,请参见下文。当用户切换到其他工作簿时,应禁用此宏。 问题是激活另一个工作簿时出现错误91 '模块中的宏 Sub AlwaysPasteValues() Selection.PasteSpecial Paste:=xlPasteValues End Sub '此工作簿中的代码 Public wb As Workbook Private Sub Workbook_Activate() Applicat
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
您正在更改wb上不作为属性存在的.MacroOptions。宏选项适用于应用程序。使用与“激活”相同的代码,您应该表现良好
Private Sub Workbook_Deactivate()
Application.MacroOptions Macro:="AlwaysPasteValues", Description:="AlwaysPasteValues", ShortcutKey:=""
End Sub
这听起来像是一个问题,所以您可以解释一下用户在模板中粘贴内容时您到底关心什么?在我看来,这似乎不是最好的方法。如果您关心字段中输入的值,您可以始终对这些单元格使用数据验证。这也只考虑使用CTRL+V进行粘贴的情况。如果我使用普通菜单粘贴公式,此代码将不会停止它。