Excel VBA循环行直到空单元格

时间:2015-07-17 13:45:15

标签: excel vba loops

我有一个excel文档,其中包含一些纯文本。 A1:A5包含文本,然后是几个houndred行,还有几行文本。之间的单元格是空的。我设置了一个Do Until循环,它应该用文本复制单元格,然后在出现空单元格时停止。我的循环计数和复制136个细胞,包括带有文本的5个细胞。所以我的问题是为什么?底线: Hello 在第136行结束,然后在下一个带有文本的区域之前有一个巨大的空单元格间隙。 131个白色细胞是否含有任何隐藏的形成物?我在下面找到了“Clear Formats”和“Clear All”代码片段:

Sub CopyTags_Click() 
 Dim assets As Workbook, test As Workbook
 Dim x As Integer, y As Integer
 Set assets = Workbooks.Open("file-path.xlsx")
 Set test = Workbooks.Open("File-path.xlsx")
 x = 1
 y = 1
 Do Until assets.Worksheets(1).Range("A" & x) = ""
    test.Worksheets(1).Range("A" & y) = assets.Worksheets(1).Range("A" & x)
    x = x + 1
    y = y + 1
 Loop
 test.Worksheets(1).Range("A" & x).Value = "Hello"
End Sub

我也尝试使用vbNullString代替“”

1 个答案:

答案 0 :(得分:5)

在A列的最后一个使用过的单元格中使用For Next Statement终止。只有在找到并传输了值时才增加 y 并让For ... Next增量 X

Sub CopyTags_Click() 

     Dim assets As Workbook, test As Workbook
     Dim x As Long, y As Long
     Set assets = Workbooks.Open("file-path.xlsx")
     Set test = Workbooks.Open("File-path.xlsx")
     x = 1
     y = 1
     with assets.Worksheets(1)
         for x = 1 to .cells(rows.count, 1).end(xlup).row
             if cbool(len(.Range("A" & x).value2)) then
            test.Worksheets(1).Range("A" & y) = assets.Worksheets(1).Range("A" & x)
                 y = y + 1
             end if
         next x
         test.Worksheets(1).Range("A" & y).Value = "Hello"
    end with
End Sub