如何不跳过vba中的空行或单元格?

时间:2010-07-20 22:00:12

标签: excel vba excel-vba

有没有办法为循环范围但包含空单元格/行的每个循环执行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

2 个答案:

答案 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之前查找下一个单元格的技术。它查找“*”,它是任何东西的通配符,它​​查找前一个单元格,它应该是电子表格中的最后一个单元格。