更改粘贴命令,使其只粘贴值

时间:2017-01-10 19:02:52

标签: excel vba excel-vba

我正在创建一个必须以某种方式格式化的Excel模板,但使用它的人倾向于将网页格式复制并粘贴到单元格中。

我已经写了一个分配给ctrl + v的宏来更改粘贴命令,所以它只是粘贴值,我试图使用application.onkey使用shift + insert调用相同的宏,但是当ctrl + v pastes只有值,shift + insert仍在执行标准粘贴。

以下是我正在处理的代码:

Public Sub KeepDestinationFormatting()
'
' KeepDestinationFormatting Macro
'
' Keyboard Shortcut: Ctrl+v
'
    ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
        False
End Sub

Sub KeepDestinationFormatting1()
    Application.OnKey Key:="+{INSERT}", Procedure:="KeepDestinationFormatting"
End Sub

修改

终于让它以我需要的方式运作。这是我使用的代码:

Sub Auto_Open()
    Application.OnKey Key:="+{INSERT}", Procedure:="KeepDestinationFormatting"
End Sub
Sub KeepDestinationFormatting()
    '
    ' KeepDestinationFormatting Macro
    '
    ' Keyboard Shortcut: Ctrl+v
    '
    ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
        False, NoHTMLFormatting:=True
End Sub

2 个答案:

答案 0 :(得分:0)

宏“无效”,因为宏尚未运行。宏实际上做的是分配键组合来调用过程,但由于你没有运行宏,它还没有被分配。将宏重命名为 Auto_open ,然后进行测试。

此外,粘贴代码对我不起作用,必须将其更改为

Selection.PasteSpecial Paste:=xlPasteValues

编辑:粘贴整个代码:

Sub Auto_open()
   Application.OnKey Key:="+{INSERT}", Procedure:="KeepDestinationFormatting"
   Application.OnKey Key:="^v", Procedure:="KeepDestinationFormatting"
End Sub

Public Sub KeepDestinationFormatting()
   Selection.PasteSpecial Paste:=xlPasteValues
End Sub

这样,您可以在宏选项中取消分配热键。

答案 1 :(得分:0)

我尝试了你的代码。它没有Format:="Text"

替换

ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= False

ActiveSheet.PasteSpecial Link:=False, DisplayAsIcon:=False