循环遍历一列并找到空单元格的代码不起作用

时间:2015-09-18 14:08:01

标签: excel excel-vba vba

我正在尝试遍历价格列以查看该单元格是否有价格。如果它是空的,那么我希望它弹出一个没有价格的消息框,如果有价格,请调用传输数据代码。现在,我无限循环通过消息框。到目前为止,这是我的代码:

Private Sub Check_Price_Click()
    'Declared variable to read the specific column
    Dim N As Long, i As Long, j As Long
    N = Cells(Rows.Count, "BB").End(xlUp).Row
    j = 2
    For i = 2 To N
        If IsEmpty(Cells(i, "BB")) Then
            MsgBox ("There is no Price")
        Else
            Call Transfer_data_Click
        End If
    Next i
End Sub

1 个答案:

答案 0 :(得分:0)

如果您的数据在第10行结束,那么最后一个价格在BB10,那么您可能希望上面的代码运行9次 - 对于第2行到第10行。在一个全新的电子表格中,它只能运行对我而言很好,但如果这不是一个全新的电子表格,那么开始完全按照你描述的方式进行操作将非常简单。

如果我下到第20行并在单元格BB20中键入一个空格,它将从2到20循环,10之后的所有内容都会显示弹出消息。如果你的单元格看起来是空的,但不是列表,那么它似乎是一个无限循环。

是否有另一列始终有数据?如果是这样,我建议如下:

(在此示例中,我使用列BA作为我的列,它始终包含数据。)

Sub example()

Dim n As Range

Set n = Range("BB2")

'Loop as long as the length of the value in column BA is greater than 0
Do While Len(Cells(n.Row(), "BA").Value) > 0

    If IsEmpty(n) Then
        MsgBox ("There is no Price")
    Else
        Call Transfer_data_Click
    End If

    'set n as the cell under the current n
    Set n = n.Offset(1, 0)
Loop

End Sub