我只想知道下面的代码是否可以用更简单或更简短的命令重写。我是新人,觉得我不是这样做的最佳方式。我要做的是选择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
答案 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
这些是您通常会对选择做的事情,但是会产生开销,并且可能会产生您不想要或不需要的其他愚蠢副作用。