Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 使用VBA将多张图纸中的行复制到另一张图纸中_Excel_Vba - Fatal编程技术网

Excel 使用VBA将多张图纸中的行复制到另一张图纸中

Excel 使用VBA将多张图纸中的行复制到另一张图纸中,excel,vba,Excel,Vba,我正试着把许多张纸合并成一张大的。这是宏的一部分,我在图纸上循环,并尝试将数据从每张图纸复制到大图纸上 For Each sh In ActiveWorkbook.Worksheets Dim lr As Long, rng As Range lr = sh.Cells(Rows.Count, 1).End(xlUp).Row Set rng = sh.Range("A2:A" & lr)

我正试着把许多张纸合并成一张大的。这是宏的一部分,我在图纸上循环,并尝试将数据从每张图纸复制到大图纸上

 For Each sh In ActiveWorkbook.Worksheets          
        Dim lr As Long, rng As Range
        lr = sh.Cells(Rows.Count, 1).End(xlUp).Row
        Set rng = sh.Range("A2:A" & lr)
        rng.EntireRow.Copy Bigsheet.Cells(Rows.Count, 1).End(xlUp)(2)
                   
 Next

但我不知道为什么我不能复制整行,这似乎只复制了一列

请针对您的情况尝试我的解决方案

Sub MergeSheets()
    Dim wb As Workbook
    Dim ws_BigSheet As Worksheet, ws As Worksheet
    Dim lng_LastRow As Long, lng_LastColumn As Long, lng_LastRowBigSheet As Long
    Dim rng_WorkRange As Range
    
    Set wb = ThisWorkbook
    Set ws_BigSheet = wb.Worksheets("") '   big sheet name here
    
    For Each ws In wb.Worksheets
        If ws.Name <> ws_BigSheet.Name Then
            lng_LastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
            lng_LastColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column
            lng_LastRowBigSheet = ws_BigSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
            
            Set rng_WorkRange = ws.Range(ws.Cells(1, 1), ws.Cells(lng_LastRow, lng_LastColumn))
            rng_WorkRange.Copy ws_BigSheet.Range("A" & lng_LastRowBigSheet)
        End If  '   If ws.Name <> ws_BigSheet.Name
    Next ws
End Sub

Sub-MergeSheets()
将wb设置为工作簿
将ws_BigSheet作为工作表,ws作为工作表
标注lng_LastRow为长,lng_LastColumn为长,lng_LastRowBigSheet为长
变暗rng_工作范围作为范围
设置wb=ThisWorkbook
在此处设置ws_BigSheet=wb.Worksheets(“”)大工作表名称
对于wb.工作表中的每个ws
如果ws.Name ws_BigSheet.Name那么
lng_LastRow=ws.Cells(Rows.Count,1).End(xlUp).Row
lng_LastColumn=ws.Cells(1,Columns.Count).End(xlToLeft).Column
lng_LastRowBigSheet=ws_BigSheet.Cells(Rows.Count,1).End(xlUp).Row+1
设置rng_WorkRange=ws.Range(ws.Cells(1,1),ws.Cells(lng_LastRow,lng_LastColumn))
rng_WorkRange.Copy ws_BigSheet.Range(“A”和lng_LastRowBigSheet)
结束If'If ws.Name ws_BigSheet.Name
下一个ws
端接头

rng.EntireRow.Copy
应该复制整行。我知道,但它不/o您的工作簿很难,也不可能重现您的问题。