Excel VBA选择 - 更好的代码

时间:2016-02-15 01:26:19

标签: excel vba excel-vba range selection

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

2 个答案:

答案 0 :(得分:2)

这是什么意思??

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中。

答案 1 :(得分:1)

这并没有直接回答你的问题,但我想向你展示一个可能的选择。你使用的工作是“连续的”,这对我来说意味着他们在一起 - 我有点不知道你的意思。如果您想要的只是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

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