Excel VBAselect – 更好的代码

我只想知道下面的代码是否可以用更简单或更短的命令重新编写。 我是新来的,觉得我不是这样做的最好方法。 我想要做的是select列A中的所有连续的数据。谢谢。

Sub colA() Dim LastRow As Long LastRow = Cells(Rows.Count, 1).End(xlUp).Row Cells(LastRow, 1).Select Range(Selection, Selection.End(xlUp)).Select End Sub 

像这样?

 Range(Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1).End(xlUp)).Select 

即使这样,我会避免这样做,我会做这样的事情:

 With Range(Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1).End(xlUp)) .Something .Something_Else End with 

尝试只使用select,当你绝对必须。

即使如此,这只是要select,直到一个空白,如果你想整个数据集,这将做到这一点:

 Range("A1:A" & range("A" & Rows.Count).end(xlUp).Row) 

如果需要的话,你可以用。或者。

这不是直接回答你的问题,但我想告诉你一个可能的select。 你用的是“连续的”,对我来说这意味着他们在一起 – 而我有点不知道你的意思。 如果你想要的只是列A中填充的单元格 ,你可以通过使用一个范围的SpecialCells方法,然后结合公式和常量 – 实际上是一个单元格可以被填充的两种方式来select它。

 Dim ws As Worksheet Dim r As Range Set ws = ActiveWorkbook.ActiveSheet Set r = Application.Union(ws.Range("A:A").SpecialCells(xlCellTypeFormulas), _ ws.Range("A:A").SpecialCells(xlCellTypeConstants)) r.Select 

这就是说,我回应@ DanDonoghue的评论,select是很less的路要走。 你用这些细胞做什么? 你是否将它们复制到剪贴板?

 r.Copy 

你正在清除格式?

 r.ClearFormats 

这些是你通常会针对这个select做的事情,但这会招致开销,并有可能招致你不想要或不需要的其他愚蠢的副作用。