VBA; запускать макрос (перезаписывать ярлык по умолчанию) только в книге, в которой он находится - PullRequest
1 голос
/ 18 февраля 2020

Я перезаписываю ярлык вставки (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 работал как обычное действие вставки в другой книге.

Чтобы еще хуже ... Есть несколько книг, которые будут иметь эту макрос вставки-перезаписи.

Если есть более простой способ ограничить вставку в определенной книге только значениями, я был бы рад услышать об этом! Я просто хочу, чтобы мои коллеги не вставляли форматирование / условные правила / формулы / et c. в эту книгу.

1 Ответ

0 голосов
/ 18 февраля 2020

После еще немного локтевой смазки, я получил решение. Не очень элегантно, но работает:

Поскольку во всех файлах, для которых требуется эта защита от вставки, в имени указано «хранилище», я смог ограничить ограничение вставки для этих книг. Используя Selection.PasteSpecial без функций для предложения else, я обошел проблему ..


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


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...