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

时间:2017-12-07 09:28:47

标签: excel vba excel-vba

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

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

3 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:1)

它不起作用,因为你必须引用相同数量的单元格。在你的情况下.Range("E" & LastRow + 1).Value = rng1,你指的是左边的一个单元格,右边的单元格。

如果您将线路更改为:

.Range("E" & LastRow + 1).Value = rng1.Cells(1, 1)

它会正确显示第一个单元格。 增加左侧范围的一种简洁方法是使用Resize(),如@CallumDA的答案。

答案 2 :(得分:0)

你不能使用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