ActiveSheet.PasteSpecial работает, ошибка с Transpose: = True - PullRequest
0 голосов
/ 03 мая 2019

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

Следующий код работает (без транспонирования):

Sub sbCopyRangeToAnotherSheet2()
  Selection.Copy
  Sheets("snippets").Activate
  ActiveSheet.PasteSpecial 
End Sub

Следующий код выдает

1004 ошибка - ошибка приложения или объекта

(только изменение: добавлено транспонирование):

Sub sbCopyRangeToAnotherSheet2()
  Selection.Copy
  Sheets("snippets").Activate
  ActiveSheet.PasteSpecial transpose:=true
End Sub

1 Ответ

3 голосов
/ 03 мая 2019

Не работает, потому что метод Worksheet.PasteSpecial не имеет параметра Transpose. Обратите внимание, что есть 2 различных метода PasteSpecial:

  1. Range.PasteSpecial метод

    PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
    
  2. Worksheet.PasteSpecial метод

    PasteSpecial(Format, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, NoHTMLFormatting)
    

И вы использовали второй (у которого нет параметра Transpose и, следовательно, ошибок).

Правильный синтаксис:

Option Explicit

Public Sub sbCopyRangeToAnotherSheet2()
    Selection.Copy
    ThisWorkbook.Sheets("snippets").Range("A1").PasteSpecial Transpose:=True
End Sub

Вы могли бы извлечь выгоду из чтения Как избежать использования Select в Excel VBA .

...