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
Vba 复制到其他工作表时出错_Vba_Excel - Fatal编程技术网

Vba 复制到其他工作表时出错

Vba 复制到其他工作表时出错,vba,excel,Vba,Excel,您好,我有一个sub,它将wb中的每个工作表复制到一个名为“Table”的工作表中,工作表由多个表构成,我需要从顶部复制第一个表,不带标题,并将工作表中包含的每个表聚合到工作表“Table”中: Sub-TableCopy() 将ws1设置为工作表_ LR1只要_ LR2尽可能长 Application.ScreenUpdating=False 对于ActiveWorkbook.工作表中的每个ws1 如果ws1.Name为“Table”,那么 LR1=工作表(“表格”)。范围(“H”和行数)。结

您好,我有一个sub,它将wb中的每个工作表复制到一个名为“Table”的工作表中,工作表由多个表构成,我需要从顶部复制第一个表,不带标题,并将工作表中包含的每个表聚合到工作表“Table”中:

Sub-TableCopy()
将ws1设置为工作表_
LR1只要_
LR2尽可能长
Application.ScreenUpdating=False
对于ActiveWorkbook.工作表中的每个ws1
如果ws1.Name为“Table”,那么
LR1=工作表(“表格”)。范围(“H”和行数)。结束(xlUp)。行数+1
LR2=ws1.Range(“B8”,Range(“B8”).End(xlDown)).Rows.Count-1
ws1.Range(“A:S”和LR2).复制目标:=图纸(“表格”).Range(“A”和LR1)
如果结束
下一个ws1
Application.ScreenUpdating=True
端接头
我要走了

“对象”工作表的方法范围失败

我就是搞不懂,你能帮我吗?thx有两种修复方法:

Sub TableCopy()
Dim ws1  As Worksheet, _
LR1 As Long, _
LR2 As Long
Application.ScreenUpdating = False
For Each ws1 In ActiveWorkbook.Worksheets
If ws1.Name <> "Table" Then
    LR1 = Sheets("Table").Range("H" & Sheets("Table").Rows.Count).End(xlUp).Row + 1 'Fix 1 (qualified the rows.count)
    LR2 = ws1.Range("B8", Range("B8").End(xlDown)).Rows.Count - 1
    ws1.Range("A2:S" & LR2).Copy Destination:=Sheets("Table").Range("A" & LR1) 'Fix 2 (added a # for starting row in copy range, assume row 1 is header)
End If
Next ws1
Application.ScreenUpdating = True
End Sub
Sub-TableCopy()
将ws1设置为工作表_
LR1只要_
LR2尽可能长
Application.ScreenUpdating=False
对于ActiveWorkbook.工作表中的每个ws1
如果ws1.Name为“Table”,那么
LR1=工作表(“表格”).范围(“H”和工作表(“表格”).行数.计数).结束(xlUp).行数+1'固定1(限定行数.计数)
LR2=ws1.Range(“B8”,Range(“B8”).End(xlDown)).Rows.Count-1
ws1.Range(“A2:S”和LR2).复制目的地:=工作表(“表格”).Range(“A”和LR1)”修复2(为复制范围中的起始行添加了一个#,假设第1行是标题)
如果结束
下一个ws1
Application.ScreenUpdating=True
端接头
子表副本()
将ws1设置为工作表_
LR1只要_
LR2尽可能长
Application.ScreenUpdating=False
对于ActiveWorkbook.工作表中的每个ws1
如果ws1.Name为“Table”,那么
LR1=工作表(“表格”)。单元格(工作表(“表格”)。行数,“H”)。结束(xlUp)。行数+1
LR2=ws1.Cells(ws1.Rows.count,“B”).End(xlUp).行-9
ws1.Range(“A2:S”和LR2).复制目标:=工作表(“表格”).Range(“A”和LR1)
如果结束
下一个ws1
Application.ScreenUpdating=True
端接头

完全限定此引用-
行数.计数
-默认情况下,它使用的是
ActiveSheet
。哪一行引发错误?ws1.Range(“A:s”和LR2)。复制目的地:=Sheets(“Table”)。Range(“A”&LR1)one
“A:s”和LR2
将导致类似于A:S100的结果,这是不正确的地址,请尝试以下操作
“A9:S”&LR2
如果粘贴范围引发另一个错误,您很可能需要列出完整的目标范围,而不是单个单元格
Sub TableCopy()
Dim ws1  As Worksheet, _
LR1 As Long, _
LR2 As Long
Application.ScreenUpdating = False
For Each ws1 In ActiveWorkbook.Worksheets
If ws1.Name <> "Table" Then
    LR1 = Sheets("Table").Range("H" & Sheets("Table").Rows.Count).End(xlUp).Row + 1 'Fix 1 (qualified the rows.count)
    LR2 = ws1.Range("B8", Range("B8").End(xlDown)).Rows.Count - 1
    ws1.Range("A2:S" & LR2).Copy Destination:=Sheets("Table").Range("A" & LR1) 'Fix 2 (added a # for starting row in copy range, assume row 1 is header)
End If
Next ws1
Application.ScreenUpdating = True
End Sub
Sub TableCopy()
Dim ws1  As Worksheet, _
LR1 As Long, _
LR2 As Long
Application.ScreenUpdating = False

For Each ws1 In ActiveWorkbook.Worksheets
If ws1.Name <> "Table" Then
    LR1 = Worksheets("Table").Cells(Worksheets("Table").Rows.count, "H").End(xlUp).row + 1
    LR2 = ws1.Cells(ws1.Rows.count, "B").End(xlUp).row - 9
    ws1.Range("A2:S" & LR2).Copy Destination:=Worksheets("Table").Range("A" & LR1)

End If
Next ws1
Application.ScreenUpdating = True
End Sub