ActiveSheet.PasteSpecial起作用,Transpose错误:= True

时间:2019-05-03 10:17:23

标签: excel vba copy-paste transpose

我正在执行一个宏,该宏将所选内容复制到当前活动的工作表中,并通过转置将其粘贴到另一个工作表中。我见过与类似问题有关的问题,但所有问题似乎都复杂得多,而对我来说,这个问题似乎很简单(令人困惑)。

以下代码有效(无转置):

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 个答案:

答案 0 :(得分:3)

它不起作用,因为Worksheet.PasteSpecial方法没有Transpose参数。 请注意,有2种不同的PasteSpecial方法:

  1. Range.PasteSpecial method

    PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
    
  2. Worksheet.PasteSpecial method

    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

您可能会受益于阅读 How to avoid using Select in Excel VBA