如何在VBA中使用xlCellTypeLastCell?

时间:2016-03-25 22:29:54

标签: vba excel-vba excel

我选择了一张工作表中的所有单元格,然后全部清除,为我带来一张空白电子表格。然后我进入E6和A1一些文本。然后我运行了以下代码,但是,我选择了E7单元格。多奇怪啊!我想知道我是否错过了什么。

Sub Macro1()
    Cells.SpecialCells(xlCellTypeLastCell).Select
End Sub

2 个答案:

答案 0 :(得分:1)

自行调用Worksheet.UsedRange property全部来重置xlCellTypeLastCell propertyRange.SpecialCells method

Sub Macro1()
    Range("E7") = "abc"
    Cells.Clear
    Range("E5") = "xyz"
    Cells.SpecialCells(xlCellTypeLastCell).Select
    ActiveSheet.UsedRange
    Cells.SpecialCells(xlCellTypeLastCell).Select
End Sub

如果您使用[F8]单步执行此操作,将首先选择E7,然后在调用.UsedRange后,将选择E5。

答案 1 :(得分:0)

根据我的经验,找到包含数据的最后一个单元格/行等的最佳解决方案是.find方法,因为即使在删除一些数据后它也是可靠的。唯一的缺点是它没有检测到隐藏的行。

下面的代码返回包含第5列(E列)中数据的最后一行。替换"列(5)"与"细胞"如果你想获得整张表中包含数据的最后一行的数量。

在VBA中选择是一种不好的做法(速度慢 - 不能用于大数据集,不透明用于编码)。您可以从我的代码中引用单元格作为范围(" E"& TheLastRow)。

Option Explicit

Sub Macro1()
Dim TheLastRow as long
  TheLastRow = Columns(5).Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
End Sub