Range и .End (xlDown) .Offset (1,0) Ошибка выполнения '1004'

Я пытаюсь скопировать из листа 1 (A1: C1) и вставить специальное значение со смещением и xlDown в лист 2 и поместить соответствующие результаты в диапазон (B3: D3).

Лист 1
Изображение 15956

Лист 4 - (Обязательный вывод)
Изображение 15957

Я получаю ошибку времени выполнения «1004» Ошибка, определяемая приложением или объектом.

Sub test()

Workbooks("testing.xlsm").Activate
Sheet1.Select
Range("A1:C1").Copy

Sheet2.Select
Range("B3").End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Application.OnTime Now + TimeValue("00:00:10"), "test"
End Sub
# excel copy-paste
Источник
  • 1
    Если вы пытаетесь найти последнюю ячейку, End(xlDown) ненадежен. Смотрите этот подход .
Codelisting
за 0 против

Это должно работать:

Sub test()
Dim wsT As Worksheet
With Workbooks("testing.xlsm")
  Set wsT = .Sheets("Sheet2")
  wsT.Cells(wsT.Rows.Count, "B").End(xlUp).Offset(1, 0).Resize(1, 3).Value = _
    .Sheets("Sheet1").Range("A1:C1").Value
  Application.OnTime Now + TimeValue("00:00:10"), "test"
End With
End Sub

Это более эффективная версия вашего кода.
Однако, если вы предпочитаете сохранить свой стиль, это менее эффективная версия:

Sub test()

Workbooks("testing.xlsm").Activate
Sheet1.Select
Range("A1:C1").Copy

Sheet2.Select
Cells(Sheet2.Rows.Count, "B").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Application.OnTime Now + TimeValue("00:00:10"), "test"
End Sub
  • 0
    Примечание: обычно ответы в тегах Excel / VBA избегают Select и Activate .
  • 0
    Пожалуйста, не используйте Select и Activate в VBA, см. Stackoverflow.com/questions/10714251/…
  • 0
    @FunThomas - Спасибо. Я обновил ответ, пожалуйста, удалите ваш голос против;)
  • 0
    @BigBen - Спасибо. Я обновил ответ, пожалуйста, удалите ваш голос против;)
  • 3
    Не мой голос против, но я думаю, вам следует полностью избавиться от второго фрагмента. Собственно, если это ответ, то вопрос является дубликатом канонического способа найти последнюю строку, на которую я ссылался в комментарии к вопросу.
Codelisting
Популярные категории
На заметку программисту