PasteSpecial во вторичном окне Excel меняет рабочий лист в главном окне - PullRequest
0 голосов
/ 01 июня 2018

Я часто копирую и вставляю формулы, поэтому я написал короткий макрос, чтобы дать мне сочетание клавиш:

Sub PasteFormula()
    ' Keyboard Shortcut: Ctrl+Shift+F
    Dim TargetRange As Range

    If Application.CutCopyMode Then
        Set TargetRange = Application.ActiveWindow.Selection
        TargetRange.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
    End If
End Sub

Он работает точно так, как нужно, с одной нежелательной особенностью.Вот как создать MWE:

  1. Откройте новую книгу Book1.xlsb.Скопируйте вышеуказанный VBA в модуль и свяжите сочетание клавиш Ctrl + Shift + F.
  2. Используйте Вид -> Окно -> Новое окно, чтобы создать второе окно, чтобы заголовки окон были "Book1".: 1 "и" Book1: 2 ".
  3. В окне" Book1: 2 "создайте второй лист" Sheet2 "и откройте этот лист.Введите что-нибудь в одну ячейку, скопируйте его, перейдите в другую ячейку в том же окне и нажмите Ctrl + Shift + F.

Макрос будет работать - формула из первой ячейки скопирована,как формула, во вторую ячейку.Однако в первом окне «Book1: 1» отображается лист 2 .Как я могу использовать VBA для запуска PasteSpecial во вторичном окне без изменения листов в главном окне?

Уточнение

Я работаю только с одной книгой "Book1.xlsb", открытой в двухокна.Эта рабочая тетрадь имеет два листа;У меня Sheet1 открыт в первом окне и Sheet2 открыт во втором окне.

Когда я запускаю PasteSpecial в Sheet2 во втором окне (Book1: 2), первое окно (Book1: 1)также переключается на Sheet2.

Для контраста, если я запускаю PasteSpecial в первом окне (Book1: 1), второе окно не переключает листы.

Мне кажется, это странное поведение.Итак, мои вопросы

  • Почему Excel делает это, и / или
  • Как я могу заставить Excel не делать этого?
...