Excel VBA 选择 - 更好的代码



我只想知道我下面的代码是否可以用更简单或更短的命令重写。 我是新来的,觉得我这样做不是最好的。 我正在尝试做的是选择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

尝试仅在绝对必要时使用选择。

即便如此,这只会选择直到空白,如果你想要整个数据集,这将做到这一点:

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

然后,如果需要,您可以将其包装在 with 或 .select 中。

这并不能直接回答您的问题,但我想向您展示一个可能的替代方案。 你用了"连续"这个作品,对我来说,这意味着他们在一起——我有点不知道你的意思。 如果您只需要 A 列中填充的单元格,您实际上可以使用范围的 SpecialCells 方法然后选择它,然后组合公式和常量——本质上是填充单元格的两种方式。

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很少是要走的路。 你用这些细胞做什么? 您是否将它们复制到剪贴板?

r.Copy

您是否正在清除格式?

r.ClearFormats

这些是你通常会对选择做的事情,但这会产生开销,并有可能产生你不想要或不需要的其他愚蠢的副作用。

最新更新