有没有办法为循环范围但包含空单元格/行的每个循环执行vba。
问题:当我在其他工作表的行上复制时,循环会自动跳过“A”列中的空白单元格并完全跳过整行,因此我会丢失该行中的一些数据,因为只有A列是空白的。
例如。
For Each cell In wks.Range("A2", "A1000")
cell.EntireRow.Copy Destination:=Worksheets("Master").Range("A65536").End(xlUp).Offset(1, 0)
Next cell
答案 0 :(得分:2)
我认为问题在于你正在使用的End()方法中使用偏移量选择。扩展范围选择,如单元格为空时停止。尝试明确指定所需的范围行。
ThisWorkbook.ActiveSheet.Range("E10:E20").Copy _
ThisWorkbook.ActiveSheet.Range("F10:F20")
当然,对col和row进行硬编码将不适用于您的情况,并且您将要使用您的wks变量而不是活动表,而只需使用正确的值替换行和col的字母和数字通过连接。可能更接近这一点:
Dim fromCol as String, toCol as String, fromRow as String, toRow as String
' populate your 4 variables through your own logic here
wks.Range(fromCol & fromRow ":" & fromCol & toRow).Copy _
wks.Range(toCol & fromRow & ":" & toCol & toRow)
祝你好运!
答案 1 :(得分:0)
这将找到Master中任何列的最后一行,并粘贴到下一行。 Master必须至少填充一个单元格,否则会出错
Sub test()
Dim cell As Range
Dim wks As Worksheet
Dim rNext As Range
Dim wsMaster As Worksheet
Set wsMaster = Worksheets("Master")
Set wks = Sheet1
For Each cell In wks.Range("A2", "A1000")
Set rNext = wsMaster.Cells(wsMaster.Cells.Find("*", _
wsMaster.Range("A1"), , , , xlPrevious).Row, 1).Offset(1, 0)
cell.EntireRow.Copy Destination:=rNext
Next cell
End Sub
它使用在A1之前查找下一个单元格的技术。它查找“*”,它是任何东西的通配符,它查找前一个单元格,它应该是电子表格中的最后一个单元格。