Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA代码,仅允许在excel模板中粘贴特殊内容_Excel_Vba - Fatal编程技术网

VBA代码,仅允许在excel模板中粘贴特殊内容

VBA代码,仅允许在excel模板中粘贴特殊内容,excel,vba,Excel,Vba,嗨 我使用的Excel模板中的列具有不同的公式和格式,我不希望在粘贴其他Excel工作表中的内容时替换这些格式 谁能给我提供一个VBA代码,我将把它粘贴到VBA编辑器中,excel模板中的所有粘贴操作都将是特殊的粘贴操作?您应该尝试在工作簿中使用事件。抱歉,如果我的翻译与您的Excel不一致,但我有MS Office的波兰语版本。但是,如果按CTRL+F11并在“项目”窗格中打开VB编辑器,则应该有类似“Microsoft Excel对象”的对象,并且这些对象对应于电子表格和工作簿。现在,在本工

我使用的Excel模板中的列具有不同的公式和格式,我不希望在粘贴其他Excel工作表中的内容时替换这些格式


谁能给我提供一个VBA代码,我将把它粘贴到VBA编辑器中,excel模板中的所有粘贴操作都将是特殊的粘贴操作?

您应该尝试在工作簿中使用事件。抱歉,如果我的翻译与您的Excel不一致,但我有MS Office的波兰语版本。但是,如果按CTRL+F11并在“项目”窗格中打开VB编辑器,则应该有类似“Microsoft Excel对象”的对象,并且这些对象对应于电子表格和工作簿。现在,在本工作簿中放置一个代码

Option Explicit

Private Sub WorkBook_Open()
    MsgBox "this happens when workbook is opened"
    Application.OnKey "^v","my_function"
End Sub
当按下此组合键时,此代码将覆盖CTRL+V并运行my_函数()。鉴于上述功能,您现在可以插入新模块并在其中添加子模块,例如

Option Explicit

Sub my_function()
    MsgBox "you have pressed ctrl+v"
    Selection.PasteSpecial Paste:=xlPasteForumlas, Operation:=xlNone, _
              SkipBlanks:=False, Transpose:=False
End Sub
有关活动的更多信息,请参见

如果上述代码不起作用,请检查Application.EnableEvents的值,如有必要,请在即时窗口中更改其值

此外,在表1中,您可以尝试对更改事件进行处理。使用此事件,您可能会阻止excel更改样式,但第一个解决方案应该更易于实现。下面是更改事件的代码

Option Explicit
Private Sub WorkSheet_Change(ByVal Target As Range)
     MsgBox "the value was changed"
End Sub
希望有帮助

Excel中事件的一些链接


事实上,我有这个代码,正在寻找另一种方式。但无论如何,thanx很多!!接受答案谢谢您接受答案,但您为什么要寻找其他方法?当我们在工作簿中使用VBA宏时,它总是询问用户是否要启用或禁用宏?由于安全问题,我的客户坚持不使用宏。但最终找到了另一种方法,在运行时添加VBA代码并动态删除代码。这有助于我绕过“启用宏”弹出窗口,客户会很高兴…:-)