Ошибка выполнения Excel VBA pastelink 1004: ошибка приложения или объекта - PullRequest
0 голосов
/ 18 ноября 2009

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

Ошибка приложения или объекта.

Вот код:

Worksheets(sheetFrom).Cells(fromRow, fromCol).Copy
Worksheets(sheetTo).Cells(toRow, toCol).Select
ActiveSheet.Paste Link:=True

Я проверяю значения to / from, и они верны.

обновление похоже, что выбор ячейки вызывает проблему.

обновление 2 Если исходный лист совпадает с листом, проблем нет. Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 18 ноября 2009

Вы получаете эту ошибку, потому что Worksheets (sheetTo) не является активным листом, когда вы пытаетесь вставить его.

Если вы добавите строку в свой код

Worksheets(sheetFrom).Cells(fromRow, fromCol).Copy
Worksheets(sheetTo).Activate
Worksheets(sheetTo).Cells(toRow, toCol).Select
ActiveSheet.Paste Link:=True

это работает.

Изменить, чтобы ответить на ответ исполнителя музыки:

Вставить ссылку, насколько я могу судить, работает только с Worksheet.Paste, а не Range.Paste. Worksheet.Paste вставляет ссылку в активную ячейку. Несмотря на то, что я согласен с вами, что следует избегать Select, использование этого типа кода, по-видимому, требует этого.

Другой альтернативой может быть создание формулы вместо вставки ссылки:

Worksheets(sheetTo).Cells(toRow, toCol).Formula = _
    "=" & Worksheets(sheetFrom).Name & "!" & Worksheets(sheetFrom).Cells(fromRow, fromCol).Address
1 голос
/ 18 ноября 2009

Я стараюсь держаться подальше от выбора. Это может привести к проблемам в потоке кода и усложнить отладку позже.

Почему бы не попробовать:

Worksheets(sheetFrom).Cells(fromRow, fromCol).Copy
Worksheets(sheetTo).Cells(toRow, toCol).Paste Link:=True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...