Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从不同工作表复制粘贴时需要的对象_Excel_Vba_Object_Copy Paste - Fatal编程技术网

Excel 从不同工作表复制粘贴时需要的对象

Excel 从不同工作表复制粘贴时需要的对象,excel,vba,object,copy-paste,Excel,Vba,Object,Copy Paste,我试图从一张工作表中复制一个范围,然后将其转置并粘贴到同一工作簿中的另一张工作表中,但由于某种原因,我得到了一个 对象要求错误 在首字母.Copy行。有人能给我解释一下吗 Sub Clean() Dim tRow As Double Dim bRow As Double Dim PasteRange As Double tRow = 5 With ThisWorkbook.Worksheets("Canadian").Activate

我试图从一张工作表中复制一个范围,然后将其转置并粘贴到同一工作簿中的另一张工作表中,但由于某种原因,我得到了一个

对象要求错误

在首字母
.Copy
行。有人能给我解释一下吗

Sub Clean()
    Dim tRow As Double
    Dim bRow As Double
    Dim PasteRange As Double

    tRow = 5

    With ThisWorkbook.Worksheets("Canadian").Activate
        bRow = Cells(Rows.Count, "A").End(xlUp).row
        Worksheets("Canadian").Range(.Cells(tRow, "A"), .Cells(bRow, "A")).Copy
        PasteRange = (bRow - tRow)
    End With

    With ThisWorkbook.Worksheets("SectorSort").Activate
        .Range(.Cells(7, "D"), .Cells(7, PasteRange + 4)).PasteSpecial (xlPasteValues), Transpose:=True    
    End With
End Sub

需要进行一些更改:

Sub Clean()

    Dim tRow As Long: tRow = 5
    Dim bRow As Long

    With ThisWorkbook.Worksheets("Canadian")
        bRow = .Cells(.Rows.Count, "A").End(xlUp).row
        .Range(.Cells(tRow, "A"), .Cells(bRow, "A")).Copy
    End With

    With ThisWorkbook.Worksheets("SectorSort")
        .Range("D7").PasteSpecial Paste:=xlPasteValues, Transpose:=True
    End With


End Sub
需要删除
。激活

范围
单元格
之前添加
,因为您处于
With
语句中

而且,粘贴更改时,您也可以仅针对单个单元格

With ThisWorkbook.Worksheets("Canadian").Activate
进入


与下一个相同(关于“SectorSort”)

删除
。激活
,并将变量声明为
Long
。很好,它成功了。关于粘贴值…是否可以将其格式化为日期?请查看日期格式BTW的.code>.Range(.Cells(7,“D”),.Cells(7,pasterrange+4)).NumberFormat=“m/D/yyyy”
。如果根本不使用
PasteRange
,可以完全忽略它。它应该是
.PasteSpecial Paste:=xlPasteValues,Transpose:=True
我相信你也可以在一行中完成这项工作,只要给这个工作簿赋值
工作表(“SectorSort”).Range(“D7:D”和7+bRow-tRow)。Value=.Range(.Cells(tRow,“A”),Application.Transpose(.Cells(bRow,“A”).Value)
With ThisWorkbook.Worksheets("Canadian")