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

我有这段代码运行时,循环通过文件夹中的文件。 代码确实运行,但是在这个段没有任何输出。

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. 将范围复制到variables中后,将激活工作簿,代码位于此处
  3. 从列E中select最后一项,偏移1行
  4. input范围variables到下一个空白单元格。

感谢所有我能find的帮助。 提前致谢。

尝试这个:

 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