我有一个 Excel 文档,其条件格式相当复杂。用户组不熟悉电子表格,主要使用它们作为在表格中排列文本的方式,因此我不能依赖培训来粘贴特殊值;如果 ctrl-v 不执行此操作,则不会发生。同样使用快速访问或类似功能修改我的 Excel 实例。
我已经得到了一个简单的 VBA 宏,我可以将 ctrl-v 重新映射到它。有两个有效的单行命令 - 但每个命令仅适用于给定类型的内容。这是宏:
Sub paste_value()
'
' paste_value Macro
' paste value only, preserving format
'
' Keyboard Shortcut: Ctrl+v
'
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
ActiveSheet.PasteSpecial 在剪贴板保存文本(通常来自另一个程序)的情况下工作,但 Selection.PasteSpecial 会抛出运行时错误 1004。
Selection.PasteSpecial 在剪贴板包含 Excel 范围时有效,但 ActiveSheet.PasteSpecial 抛出运行时错误 1004。
查看剪贴板上的内容并选择适当的命令的测试可以工作,但我不知道如何进行该测试。一些快速的谷歌搜索使它看起来是一项艰巨的任务,可能会干扰剪贴板本身。
也欢迎任何其他有效的方法。
试试这个代码:
Sub paste_value()
'
' paste_value Macro
' paste value only, preserving format
'
' Keyboard Shortcut: Ctrl+v
'
On Error Resume Next
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, _
DisplayAsIcon:=False, NoHTMLFormatting:=True
If Err = 0 Then Exit Sub
Selection.PasteSpecial Paste:=xlPasteValues
End Sub