循环不将值插入摘要表

时间:2017-11-21 22:21:41

标签: excel-vba vba excel

尝试从300个格式相同的工作表中编译一个列表。我想在这个摘要表上粘贴/插入值,这样在循环的每次迭代之后,新数据被放在下一个空行中,这样就有一个单独的“主列表”。我在“Summary.Cells”行中遇到“类型不匹配”错误,从底部开始是第4行。

Sub Compile()

Dim ws as Worksheet
Dim Summary as Worksheet

Set Summary = ThisWorkbook.Sheets("Sheet1")

For Each ws in ThisWorkbook.Sheets

If Not ws.Name = "Summary" Then

Summary.Cells(Rows.Count,1).End(xlUp).Row+1 = ws.Range("BB1:DO11").Value

End If

Next ws

End Sub

非常感谢任何帮助,谢谢,

2 个答案:

答案 0 :(得分:3)

直接分配值时,范围必须相同。

您正在尝试将行号等同于数组。

  

N

将行号返回为Long而不是Range。

根据SJR的评论,获取我们使用的第一个单元格:

Summary.Cells(Rows.Count,1).End(xlUp).Row+1

然后我们需要将其大小调整为与输入范围相同的大小。

Summary.Cells(Rows.Count, 1).End(xlUp).Offset(1)

使用

Summary.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(11, 66).Value

答案 1 :(得分:3)

这几乎与斯科特的答案相同,所以如果你足够好接受一个,请接受他,但只是显示一种稍微不同的调整范围的方法。

Sub Compile()

Dim ws As Worksheet
Dim Summary As Worksheet

Set Summary = ThisWorkbook.Sheets("Sheet1")

For Each ws In ThisWorkbook.Sheets
    If Not ws.Name = "Sheet1" Then  'I think this is right but may need to be 'Summary'
        With ws.Range("BB1:DO11")
            Summary.Cells(Rows.Count, 1).End(xlUp)(2).Resize(.Rows.Count, .Columns.Count).Value = .Value
        End With
    End If
Next ws

End Sub