Ctrl-End不会将我带到最后一个单元格

Que*_*ing 5 excel vba excel-vba

Ctrl-end键应该将我带到底部最右边的单元格.但是,在一些情况下,它超出了这个范围,这意味着它会减少数百个单元,即使这些单元上实际上没有数据.

你能否告诉VBA脚本如何清理导致这种情况的那些可能不可见的数据?我很确定它不适用于常规删除,尽管这样做,它仍然表现相同.

Mik*_*use 11

Ctrl-End确实会将您带到右下角​​的单元格,它只是使用不同的规则来决定您应该决定该单元格应该是什么.几乎所有以任何方式引用的单元格都将包含在决策中.这很烦人,但这就是Excel"工作"的方式.

以下是如何解决问题的说明.

换句话说:

  1. 选择工作表中包含数据的最后一个单元格
  2. 要删除任何未使用的行:

    • 使用数据从最后一个单元格向下移动一行.
    • 按住Ctrl和Shift键,然后按向下箭头键
    • 在所选单元格中单击鼠标右键,然后从快捷菜单中选择"删除"
    • 选择整行,单击"确定".
  3. 删除整行

  4. 要删除任何未使用的列:

    • 使用数据从最后一个单元格向右移动一列.
    • 按住Ctrl和Shift键,然后按向右箭头键
    • 在所选单元格中单击鼠标右键,然后从快捷菜单中选择"删除"
    • 选择"整列",单击"确定".
  5. 保存文件.注意:在旧版本的Excel中,您可能必须保存,然后在重置使用的范围之前关闭并重新打开文件.

  • 保存是重要的,因为它是有意义的 (7认同)

Rob*_*rns 5

该脚本将为运行时处于活动状态的任何工作表重置最后使用的行。

Sub Reset()

    Dim lngCount As Long

    lngCount = ActiveSheet.UsedRange.Rows.Count

End Sub
Run Code Online (Sandbox Code Playgroud)

  • 它强制Excel重新计算最后一个单元格。在新的工作簿中尝试此测试。输入数字单元格A1:A6,选择A1,然后按Ctrl + End,将选择单元格A6。按Delete键删除A6中的数字,选择A1,按Ctrl + End,即使其中没​​有数据,单元格A6也被选中。运行宏。选择A1,然后按Ctrl + End,它将选择单元格A5,最后一个包含数据的单元格。 (2认同)
  • 显然,很简单[访问“ ActiveSheet.UsedRange”会重置最后一个单元格](https://www.extendoffice.com/documents/excel/2589-excel-reset-last-cell.html#a2)。尽管尝试将Dim ws作为工作表:将ws = ActiveSheet设置为后跟ws.UsedRange会给属性无效使用,因此似乎需要分配给虚拟变量:将Dim dummy设置为Range:Set dummy = ws.UsedRange` (2认同)