Excel - 如果剪贴板包含文本或范围,则无需格式化即可进行 ctrl-v 粘贴

问题描述 投票:0回答:1

我有一个 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。

查看剪贴板上的内容并选择适当的命令的测试可以工作,但我不知道如何进行该测试。一些快速的谷歌搜索使它看起来是一项艰巨的任务,可能会干扰剪贴板本身。

也欢迎任何其他有效的方法。

excel vba format paste
1个回答
0
投票

试试这个代码:

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
© www.soinside.com 2019 - 2024. All rights reserved.