Excel VBA使用单元格和xlDown选择范围

时间:2016-05-13 12:13:36

标签: excel excel-vba vba

我循环遍历A列中的一个范围以找到标题,一旦找到,我需要选择下一个单元格到最后一个使用过的单元格。

在我的生命中不能使用Cells和End(xlDown)选择此范围

For k = 1 To lastCell
    If Cells(k, 1).Value = rangeName Then
        Range(Range(Cells(k + 1, 1)), Range(Cells(k + 1, 1)).End(xlDown)).Select
    End If
Next k

我尝试了Range(Cells(k + 1, 1), Cells(k + 1, 1).End(xlDown)),但没有任何组合可以使用。

A列中有空白单元格,数据示例如下:

MONTH
Jan
Feb

AGE
18-21
22+

GENDER
Male
Female
Horse

如果rangeName等于GENDER,我将如何选择此范围。

1 个答案:

答案 0 :(得分:2)

以下内容应该有效:

For k = 1 To lastCell
    If Cells(k, 1).Value = rangeName Then
        Range(Cells(k + 1, 1), Cells(k + 1, 1).End(xlDown)).Select
    End If
Next k

然而,我建议您更明确地编码以确保其有效:

With Worksheets("SheetYouAreWorkingOn")
    For k = 1 To lastCell
        If .Cells(k, 1).Value = rangeName Then
            .Range(.Cells(k + 1, 1), .Cells(k + 1, 1).End(xlDown)).Select
        End If
    Next k
End With

使用空/新文件中的示例数据进行测试:

Public Sub tmpSO()

Dim lastCell As Long
Dim rangeName As String

rangeName = "AGE"

With Worksheets("Sheet1")
    lastCell = .Cells(.Rows.Count, 1).End(xlUp).Row
    For k = 1 To lastCell
        If .Cells(k, 1).Value = rangeName Then
            .Range(.Cells(k + 1, 1), .Cells(k + 1, 1).End(xlDown)).Select
        End If
    Next k
End With

End Sub