VBA代码只允许在Excel模板中特别粘贴

HI,

我正在使用具有不同公式和格式的列的Excel模板,我不希望这些格式被replace,当我从另一个Excel表格粘贴的东西。

任何人都可以提供我,只需要一个VBA代码,我将粘贴在VBA编辑器中,所有的粘贴操作在我的Excel模板将是粘性特殊?

您应该尝试在工作簿中使用“事件”。 对不起,如果我的翻译不符合你的Excel,但我有波兰版的MS Office。 但是,如果按下CTRL + F11并在“项目”窗格中打开VB编辑器,则应具有“Microsoft Excel对象”之类的对象,并且存在与电子表格和工作簿对应的对象。 现在,在ThisWorkbook中放置一个代码

Option Explicit Private Sub WorkBook_Open() MsgBox "this happens when workbook is opened" Application.OnKey "^v","my_function" End Sub 

此代码将覆盖CTRL + V,并在按下此组合键时运行my_function()。 鉴于上面的function,你现在可以插入新的模块,并添加一个子例如

 Option Explicit Sub my_function() MsgBox "you have pressed ctrl+v" Selection.PasteSpecial Paste:=xlPasteForumlas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub 

有关这些事件的更多信息,请参阅http://www.cpearson.com/excel/Events.aspx

如果上面的代码不起作用,请检查Application.EnableEvents的值,如果需要,则在即时窗口中更改它的值。

而且,在Sheet1中,您可以尝试使用更改事件进行操作。 使用这个事件,你可能会阻止excel改变样式,虽然第一个解决scheme应该更好实施。 以下是更改事件的代码。

 Option Explicit Private Sub WorkSheet_Change(ByVal Target As Range) MsgBox "the value was changed" End Sub 

希望它有帮助。

Excel中事件的一些链接