我正在创建一个必须以某种方式格式化的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
答案 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