Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
VBA Excel从多个工作表复制/粘贴特定范围_Excel_Runtime Error_Copy Paste_Vba - Fatal编程技术网

VBA Excel从多个工作表复制/粘贴特定范围

VBA Excel从多个工作表复制/粘贴特定范围,excel,runtime-error,copy-paste,vba,Excel,Runtime Error,Copy Paste,Vba,我一直在网上寻找解决方案,但无论我怎么尝试,都会不断出现错误 我有大约20个工作表,我想为每个工作表复制相同的范围,并将它们合并到另一个工作表以创建报告 我可以在下面修改这个解决方案,但它仍然不起作用,我不知道为什么 任何帮助都是感激的 Sub forReport() Dim lRow As Long Dim copyRange As Range Dim sh As Worksheet Dim shReport As Worksheet Set shRepo

我一直在网上寻找解决方案,但无论我怎么尝试,都会不断出现错误

我有大约20个工作表,我想为每个工作表复制相同的范围,并将它们合并到另一个工作表以创建报告

我可以在下面修改这个解决方案,但它仍然不起作用,我不知道为什么

任何帮助都是感激的

Sub forReport()

   Dim lRow As Long
   Dim copyRange As Range
    Dim sh As Worksheet
    Dim shReport As Worksheet
    Set shReport = ThisWorkbook.Worksheets("ALLProjectForReport")

    For Each sh In ThisWorkbook.Worksheets
        Select Case sh.Name
            Case Is <> "ALLProjectForReport"
                lRow = shReport.Cells(Rows.count, "A").End(xlUp).Row + 1
               Set copyRange = sh.Range("A:B,D:D,F:F,J:K,L:L,BK:BK,GA:GB,GF:GF")

               copyRange.Copy Destination:=shReport.Range("A" & lRow)                    

        End Select
    Next
    Set shReport = Nothing
    Set sh = Nothing
End Sub
有什么帮助吗

尝试以下快速修复方法:

Set copyRange = Intersect(sh.UsedRange, sh.Range("A:B,D:D,F:F,J:K,L:L,BK:BK,GA:GB,GF:GF"))

你不能复制一整列,然后把它粘贴到工作表的一半——你的单元格已经用完了。我想您需要重新考虑
copyRange
。设置
lRow
时,您需要使用
lRow=shReport.Cells(shReport.Rows.count,“A”).End(xlUp)。Row+1
。否则,它将从
ActiveSheet
@ShaiRado中获取
行数。谢谢,我改了:)@SJR好的,这很有意义。。。是否有一种方法可以为每个工作表复制一个范围(“A2:lRow”),然后从我想要的特定工作表的(“a”&lRow)粘贴它?是的,但可能lRow在每种情况下都不同@下面的A.S.H解决方案可能对你有用。是的,它有效!!!!非常感谢你!!我要读一下这个方法。非常感谢你。。。如何将问题标记为已回答?我向它竖起大拇指,但它仍然显示为零…@DrD4rk不客气,很乐意帮忙:)。接受是三角形下方的灰色复选标记:)yaayyy。再次感谢。你让我高兴极了!
Set copyRange = Intersect(sh.UsedRange, sh.Range("A:B,D:D,F:F,J:K,L:L,BK:BK,GA:GB,GF:GF"))