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