我已经在VBA中编程了一段时间了,我的代码经常出现一个反复出现的问题:执行时,VBA编译器经常会完全忽略我的“ FillDown”行,这些行用于在行之间传递公式。
主要是在FillDown行靠近从另一个工作簿获取数据的代码时,例如:
Dim wsDb as Worksheet
Dim wsDb2 as Worksheet
Dim wbSAP as Workbook
Set wsDb = ThisWorkbook.Worksheets("Db")
Set wsDb2 = ThisWorkbook.Worksheets("Db2")
'Opens a second workbook, gets data from it and close it.
Set wbSAP = Workbooks.Open(Path)
lastLineSAP = wbSAP.Worksheets(1).Range("D" & Rows.Count).End(xlUp).Row
wbSAP.Worksheets(1).Range(Cells(5, 3), Cells(lastLineSAP, 44)).Copy _
Destination:=wsDb2.Cells(lastLineBefore + 1, 2)
wbSAP.Close SaveChanges:=False
'Returns to my original workbook and tries to FillDown some cells
wsDb.Select
With wsDb
.Range(.Cells(startLine, 30), .Cells(finishLine, 54)).FillDown
End With
此方法是我努力使FillDown行更加可靠的最新版本(wsDb.Select仅出于此原因在这里,因为我注意到如果我选择编译器,编译器将略微忽略此行代码)工作表),但过去我也尝试过其他一些版本,但都没有成功,例如以下示例:
wsDb.Select
wsDb.Range("AD" & startLine & ":BB" & finishLine).FillDown
这就是为什么我需要您的帮助。你怎么做呢?如何在打开和关闭其他工作簿的代码中可靠地填充单元格?也许复制粘贴更好?
谢谢。