我的代码正在运行,但没有插入任何值



我在循环浏览文件夹中的文件时运行了这段代码。 代码确实运行,但在此段上没有任何输出。

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
  1. 我正在使用这段代码从文件夹中的所有 excel 工作簿中提取从 B15 到 E81 和 N15 到 O 81 的数据。
  2. 将范围复制到变量后,它将激活此代码所在的工作簿
  3. 从 E 列中选择最后一个条目,偏移 1 行
  4. 输入范围变量到下一个空白单元格。

感谢我能找到的所有帮助。提前谢谢。

试试这个:

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

最新更新