我在循环浏览文件夹中的文件时运行了这段代码。 代码确实运行,但在此段上没有任何输出。
Dim LastRow As Long
Dim rng1 As Range
wb.Worksheets(1).Activate
Set rng1 = Range("B15:E81,N15:O81")
With ThisWorkbook.Worksheets("Sheet1")
LastRow = .Cells(.Rows.Count, "E").End(xlUp).Row
.Range("E" & LastRow + 1).Value = rng1
End With
- 我正在使用这段代码从文件夹中的所有 excel 工作簿中提取从 B15 到 E81 和 N15 到 O 81 的数据。
- 将范围复制到变量后,它将激活此代码所在的工作簿
- 从 E 列中选择最后一个条目,偏移 1 行
- 输入范围变量到下一个空白单元格。
感谢我能找到的所有帮助。提前谢谢。
试试这个:
Dim lastRow As Range, rng1 As Range
Set rng1 = Worksheets(1).Range("B15:E81,N15:O81")
Set lastRow = ThisWorkbook.Worksheets("Sheet1").Cells(ThisWorkbook.Worksheets("Sheet1").Rows.Count, "E").End(xlUp)
lastRow.Offset(1, 0).Resize(rng1.Rows.Count, rng1.Columns.Count).Value = rng1.Value
它不起作用,因为您必须引用相同数量的单元格。在您这里的情况下.Range("E" & LastRow + 1).Value = rng1
您指的是左侧的一个单元格和右侧的许多单元格。
如果您将线路更改为:
.Range("E" & LastRow + 1).Value = rng1.Cells(1, 1)
它将正确显示第一个单元格。 增加左侧范围的一种干净方法是使用Resize()
,如@CallumDA答案。
你不能用Copy
吗?然后不必计算目标大小。
dim target as range
With ThisWorkbook.Worksheets("Sheet1")
set target = .Range("E" & .Cells(.Rows.Count, "E").End(xlUp).Row+1 )
end With
wb.Worksheets(1).Range("B15:E81,N15:O81").Copy target