如果数据之间存在空白单元格,如何使用Rows.Count函数

时间:2018-11-19 03:04:19

标签: excel vba excel-vba

我正在尝试编写一个代码,如果用户选择的项目等于J中的范围,那么它将从excel工作表中添加数据。如果J中的范围被所有数据填充,那么这将非常有效如果它们之间有空格,我如何使该行仍然一直计数到最后一个填充的单元格?我附上一张图片来说明我的意思。

enter image description here

我想一直计数到最后一个“金”的行数。现在,它仅计数到秒。

Private Sub cboName_Click() 'only get values that are assigned
    Dim j As Integer, k As Integer, i As Integer
    Me.lstProvider.Clear
    i = 0
    Worksheets("Biopsy Log").Select
    For j = 1 To Range("J2", Range("J1").End(xlDown)).Rows.count 
        If Range("J2", Range("J2").End(xlDown)).Cells(j) = Me.cboName.Value Then 
            If Range("C2", Range("C2").End(xlDown)).Cells(j) = "Assigned" Then 
            With Me.lstProvider
                .AddItem
                For k = 0 To 5
                    .List(i, k) = Range("A" & j + 1).Offset(0, k) 
                Next
            End With
            i = i + 1 
            End If
        End If
    Next
End Sub

2 个答案:

答案 0 :(得分:1)

请尝试从底部开始使用xlDown,以获取正确范围的最后一行,而不是使用xlUp

Dim sht As Worksheet
Set sht = Worksheets("Biopsy Log")

For j = 1 To sht.Range("J" & sht.Rows.Count).End(xlUp).Row
    If sht.Range(...)

使用显式Range对象限定Worksheet调用可使代码更健壮。

答案 1 :(得分:0)

使用For j = 1 To Range("J2", Range("J1").End(xlDown)).Rows.count代替Range("J" & Rows.Count).End(xlUp).Row(假设GOLD在J列中)。该代码与xlDown相反。它下降到工作表的最后一行(Rows.count),然后向上移动直到找到第一个非空白单元格。