首页 > 解决方案 > VBA; 仅在包含它的工作簿中运行宏(覆盖默认快捷方式)

问题描述

我正在用一个宏覆盖粘贴快捷方式 (ctrl-v) 以仅粘贴值。但是,我只希望这发生在宏所在的实际工作簿中。

这是我的代码:

Sub paste_values_only()
If Not ActiveWorkbook Is ThisWorkbook Then Exit Sub
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub


它似乎有效,除了当我现在在另一个工作簿中 ctr-v 时,它根本不会粘贴。我希望 ctrl-v 像在另一个工作簿中的正常粘贴操作一样工作。

更糟糕的是......有多个工作簿将具有此粘贴覆盖宏。

如果有一种更简单的方法可以将某个工作簿中的粘贴限制为仅值,我也很高兴听到它!我只是想阻止我的同事粘贴格式/条件规则/公式/等。进入本工作簿。

标签: excelvba

解决方案


在更多的肘部油脂之后,我得到了解决方案。不是很优雅,但它有效:

由于需要具有此粘贴保护的所有文件的名称中都有“存储”,因此我能够将粘贴限制限制为这些工作簿。对 else 子句使用Selection.PasteSpecial没有功能我解决了这个问题..


Sub paste_values_only()

Dim wbname As String

wbname = ActiveWorkbook.Name

If wbname Like "*storage*" Then
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Else
    Selection.PasteSpecial
End If

End Sub



推荐阅读