选择具有可变行数的列中的所有数据

时间:2017-06-01 12:18:37

标签: excel-vba vba excel

我有一个示例,我想编写一个VBA语句,它将选择单个列中的所有数据,列数据中没有空格。列位置永远不会改变,例如列A,数据从第3行开始。但是,列中的总行数将定期更改。

我希望系统动态选择列中的所有单元格,然后我可以针对这些选定的数据运行一个方法。

3 个答案:

答案 0 :(得分:1)

如果您的专栏是"隔离"意味着没有其他非空白单元格可以触及您可以使用的数据:

Range("firstCellInYourColumn").CurrentRegion.Select

(这与键盘上的Ctrl + *的工作方式相同)

否则使用:

Range(Range("firstCellInYourColumn"), Range("firstCellInYourColumn").End(xlDown)).Select

如果您的数据中确实没有空白,则两者都将正常工作 您还应该在工作表表达式前加上所有Range,我省略了这一点。

答案 1 :(得分:1)

作为在您的范围内执行操作而不选择它的示例:

Public Sub Test()

    Dim rColA As Range

    With ThisWorkbook.Worksheets("Sheet1")
        Set rColA = .Range(.Cells(3, 1), .Cells(.Rows.Count, 1).End(xlUp))
        MsgBox "Column A range is " & rColA.Address 'Delete if you want.

        rColA.Interior.Color = RGB(255, 0, 0) 'Turn the back colour red.

        rColA.Cells(2, 1).Insert Shift:=xlDown 'Insert a blank row at second cell in range
                                               'So will insert at A4.

        'If the first cell in your range is a number then double it.
        If IsNumeric(rColA.Cells(1, 1)) Then
            rColA.Cells(1, 1) = rColA.Cells(1, 1) * 2
        End If

    End With

End Sub

答案 2 :(得分:0)

尝试

Dim LastRow as Long, sht as worksheet
Set sht = ThisWorkbook.Worksheets("My Sheet Name")    
LastRow = sht.Cells(sht.Rows.Count, 1).End(xlUp).Row
sht.Range("A3:A" & LastRow).Select

就像Darren Bartrup-Cook所说,你可能不需要选择数据,你几乎总能直接执行更快的动作。