Автор Тема: VBA операция вставить .paste Ошибка 438  (Прочитано 586 раз)

Оффлайн Посетитель 06.10.2022

  • Посетитель форума
  • Сообщений: 14
Добрый день!

Подскажите в чем ошибка? (см. скриншот)
Ошибка 438
Object doesn't support this property or method

Вроде простая операция вставить


Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: VBA операция вставить .paste Ошибка 438
« Ответ #1 : 07 Октябрь 2022, 15:52 »
Потому что у объекта Range нет метода Paste. Об этом так и говорится в сообщении: Объект не поддерживает это свойство или метод.
У объекта Range есть метод PasteSpecial.

У объекта Worksheet есть метод Paste:
Dim Лист As Worksheet
Лист.Paste Destination:=Range("A1"), Link:=False

Оффлайн Посетитель 06.10.2022

  • Посетитель форума
  • Сообщений: 14
Re: VBA операция вставить .paste Ошибка 438
« Ответ #2 : 07 Октябрь 2022, 16:09 »
Worksheets("Лист5").Cells(12, 2).Copy
Worksheet.Paste Destination:=Worksheets("ШифрANR").Range("B275"), link:=False

Так? Но у меня снова ошибка.

Можно ли использовать .cells() вместо .range() ?

Оффлайн Посетитель 06.10.2022

  • Посетитель форума
  • Сообщений: 14
Re: VBA операция вставить .paste Ошибка 438
« Ответ #3 : 07 Октябрь 2022, 16:11 »
ошибка 424
Object required

выделяется 2-я строка (с Paste)

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: VBA операция вставить .paste Ошибка 438
« Ответ #4 : 07 Октябрь 2022, 16:14 »
Здесь вместо Worksheet нужно указать конкретный лист, на который надо вставить:
Worksheet.Paste

Оффлайн Посетитель 06.10.2022

  • Посетитель форума
  • Сообщений: 14
Re: VBA операция вставить .paste Ошибка 438
« Ответ #5 : 07 Октябрь 2022, 16:21 »
Worksheets("Лист5").Cells(12, 2).Copy
Worksheets("ШифрANR").Paste Destination:=Range("B275"), link:=False
Снова ошибка во второй строке.

Может дело в том что на Листе 5 ячейка B12 объединенная ( т.е. занимает диапазон B12:U12)
А на листе ШифрANR она самостоятельная B275 (одиночная)

Может это возможно решить с помощью свойства resize?
Но у меня ничего не вышло...

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: VBA операция вставить .paste Ошибка 438
« Ответ #6 : 07 Октябрь 2022, 16:23 »
Сделайте скрин ошибки.

Оффлайн Посетитель 06.10.2022

  • Посетитель форума
  • Сообщений: 14
Re: VBA операция вставить .paste Ошибка 438
« Ответ #7 : 07 Октябрь 2022, 16:52 »
во вложении.

разный размер ячеек откуда копируют и куда вставляют точно не мешает (писал выше)?

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: VBA операция вставить .paste Ошибка 438
« Ответ #8 : 07 Октябрь 2022, 16:54 »
Я имел ввиду текст ошибки, т.е. скрин сообщения, в котором текст ошибки.

Оффлайн Посетитель 06.10.2022

  • Посетитель форума
  • Сообщений: 14
Re: VBA операция вставить .paste Ошибка 438
« Ответ #9 : 07 Октябрь 2022, 17:18 »
ошибка 1004
во вложении

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: VBA операция вставить .paste Ошибка 438
« Ответ #10 : 07 Октябрь 2022, 17:21 »
Здесь возможно перед Range("B275") нужно указать лист Worksheets("ШифрANR"). Иначе сейчас подставляется активный лист и происходит нестыковка: копируется из листа "ШифрANR", а пытается вставить на активный лист, который не является листом "ШифрANR".
Worksheets("ШифрANR").Paste Destination:=Range("B275"), link:=False

Оффлайн Посетитель 06.10.2022

  • Посетитель форума
  • Сообщений: 14
Re: VBA операция вставить .paste Ошибка 438
« Ответ #11 : 07 Октябрь 2022, 17:45 »
Неа, не работает. См. скриншот.

У меня получилось другим способом. Получилось случайно :)
Sheets("Лист5").Range("B12").Resize(1, 1).Copy Sheets("ШифрANR").Range("B275")

Полный алгоритм такой:
Select Case Worksheets("Лист5").Cells(13, 2).Value
        Case Is = "ANR"
            Worksheets("ШифрANR").Cells(275, 2).ClearContents
            Sheets("Лист5").Range("B12").Resize(1, 1).Copy Sheets("ШифрANR").Range("B275")
        Case Is = "ANP"
            Worksheets("ШифрANP").Cells(275, 2).ClearContents
            Sheets("Лист5").Range("B12").Resize(1, 1).Copy Sheets("ШифрANP").Range("B275")
    End Select
     Application.CutCopyMode = False

Но все же мне интересно как правильно записать способом выше, над которым вы трудитесь ...

P.S. Видимо правда проблема в разном размере ячеек: откуда копируем (B12:U12) и куда вставляем (В275). Одна объединенная другая нет.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: VBA операция вставить .paste Ошибка 438
« Ответ #12 : 07 Октябрь 2022, 17:55 »
Я был не прав, в параметре Destination можно указать любой лист, а не обязательно тот, который указан в начале.
Если у вас всё работает, то нет смысла с этим разбираться.

Оффлайн Посетитель 06.10.2022

  • Посетитель форума
  • Сообщений: 14
Re: VBA операция вставить .paste Ошибка 438
« Ответ #13 : 07 Октябрь 2022, 18:02 »
Хорошо, спасибо большое Вам!