Генри хотел бы скопировать данные, содержащиеся в исходной ячейке, в целевую ячейку, не покидая текущей позиции на листе.

Другими словами, он хотел бы скопировать из ячейки A1 в ячейку AE459, не покидая своего текущего положения в V104. Он задается вопросом, возможно ли такое редактирование.

Конечно, очевидный подход к этому — просто поместить формулу = A1 в ячейку AE459. Затем Excel позаботится о том, чтобы две ячейки были равны. Вы также можете открыть второе окно на листе и позаботиться о копировании в этом окне; ячейка, выбранная в исходном окне (ячейка V104), останется без изменений.

Однако, если вы действительно хотите выполнить операцию «копирования», не открывая второе окно, вам придется прибегнуть к макросу.

Копировать из одной ячейки в другую внутри макроса довольно просто. Например, в следующем примере будет скопировано содержимое ячейки A1 в AE459, не затрагивая ту ячейку, которую вы выбрали в данный момент:

Sub CopyCell1()

'   Copy the cell value to destination cell     Range("AE459") = Range("A1")

End Sub

Если вы хотите скопировать формулу, которая находится в ячейке A1, в место назначения, вам необходимо изменить способ выполнения копирования. В частности, вам необходимо использовать метод Copy, используя диапазон назначения в качестве параметра.

Sub CopyCell2()

'   Copy the relative formula to destination     Range("A1").Copy Range("AE459")

End Sub

Конечно, недостатком этих макросов является то, что они статичны — они копируют только из ячейки A1 в ячейку AE459. Если ваши потребности в копировании могут различаться, вы можете рассмотреть возможность выполнения задачи в окне непосредственного выполнения редактора VB. Просто откройте редактор и введите одну строку из соответствующего макроса в окно. Затем копирование завершено, и вы можете закрыть редактор, не затрагивая выбранную вами ячейку.

Другой способ обеспечить некоторую гибкость источника и назначения для макроса — заставить его (макрос) запрашивать у пользователя источник и назначение. Следующий макрос использует этот подход.

Sub CopyCell3()

Dim SrceCell As String     Dim DestCell As String

SrceCell = InputBox("Copy From Cell ...")

DestCell = InputBox("Copy To Cell ...")

Range(DestCell) = Range(SrceCell)

End Sub

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (9949) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.