Как исправить pastespecial ошибку в Excel VBA: Ошибка выполнения 1004 - PullRequest
0 голосов
/ 11 июля 2019

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

Я получаю сообщение об ошибке «Не удалось выполнить метод PasteSpecial класса Range» при нажатии кнопки «Отладка», и F5 код выполняется без проблем

И я использовал Application.displayalerts = false, но все равно я получаю сообщение об ошибке, и код запускается, если я пытаюсь нажать F5

        S_xlobj.Activate
        S_wsObj.Select
        S_wsObj.Range(ThisWorkbook.Sheets("Config").Cells(i, 3) & F1_startRow & ":" & ThisWorkbook.Sheets("Config").Cells(i, 3) & F1_Lastrow).Copy
        D_xlobj.Activate
        D_wsObj.Select
        D_wsObj.Range(Split(Cells(1, j).Address, "$")(1) & 2).PasteSpecial xlPasteValues

Я ожидаю, что он должен работать без ошибок. Иногда он работает без ошибок, но иногда я получаю эту ошибку

Ответы [ 2 ]

1 голос
/ 12 июля 2019

Есть несколько вопросов:

  1. Excel не может знать, в каком листе Cells(1, j).Address. Всегда указывайте лист!

    ThisWorkbook.Worksheets("SheetNAme").Cells(1, j).Address
    'or
    D_wsObj.Cells(1, j).Address
    
  2. Range(Split(Cells(1, j).Address, "$")(1) & 2) совпадает с Cells(2, j)

  3. Не используйте .Select или .Activate, в этом нет необходимости. Как избежать использования Select в Excel VBA .

Так что это должно работать (остальное не нужно):

S_wsObj.Range(S_wsObj.Cells(i, 3) & F1_startRow & ":" & S_wsObj.Cells(i, 3) & F1_Lastrow).Copy
D_wsObj.Cells(2, j).PasteSpecial xlPasteValues
0 голосов
/ 12 июля 2019

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

Вместо того, чтобы использовать копирование / вставку, я использовал массивы, и теперь он работает без проблем

Новый код, которыйЯ использую (для удобства: удаленные переменные, которые динамически получают имя столбца)

Dim myArray() As Variant
myArray = S_wsObj.Range("B6:B600").Value  '''storing the values in array rather than copy
D_wsObj.Range("A2:A560") = myArray    ''' Filling range with the array instead of paste 

Это работает как шарм без каких-либо проблем

Спасибо за вашу поддержку

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