清除用过的单元格,不起作用:ctrl + end检测到它们

时间:2017-12-21 11:37:02

标签: excel vba excel-vba

我有一个我经常编辑和清除的工作簿。有一次我可能会将100 000行数据放入其中,而另一行 - 仅200行。要清除我使用的工作簿

.Range("A2:AO100000").Clear

它删除了单元格的可见内容,但仍有一些内容 - 使用键Ctrl+End会导致跳转到远高于当前可见范围的单元格。

我需要一种方法来确保删除之前编辑的所有数据,以便Ctrl+End证明这一点。

4 个答案:

答案 0 :(得分:2)

我会使用ActiveSheet.UsedRange.Offset(1, 0).Clear来删除数据(只要UsedRange没有扩展到最后一个可用行)。使用Offset(1, 0)表示保留标题行。

然后使用ActiveSheet.UsedRange重置最后一个单元格。

答案 1 :(得分:2)

从您的示例代码中,您似乎只想保留标题行。如果是这种情况,请尝试:

Sub KeepHeaderRow()
    Rows("2:" & Rows.Count).Delete
End Sub

答案 2 :(得分:0)

Sub DeleteUnusedFormats()

    Dim lLastRow As Long, lLastColumn As Long
    Dim lRealLastRow As Long, lRealLastColumn As Long

    'Delete from used range rows & columns that have no data
    'Detect end of used range including empty formatted cells
    With Range("A1").SpecialCells(xlCellTypeLastCell)
        lLastRow = .Row
        lLastColumn = .Column
    End With

    'Find end of cells with data
    lRealLastRow = _
        Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row
    lRealLastColumn = _
        Cells.Find("*", Range("A1"), xlFormulas, , xlByColumns, xlPrevious).Column

    'If used range exceeds data, delete unused rows & columns
    If lRealLastRow < lLastRow Then
        Range(Cells(lRealLastRow + 1, 1), Cells(lLastRow, 1)).EntireRow.Delete
    End If
    If lRealLastColumn < lLastColumn Then
        Range(Cells(1, lRealLastColumn + 1), _
        Cells(1, lLastColumn)).EntireColumn.Delete
    End If

    ActiveSheet.UsedRange 'Resets LastCell

End Sub

答案 3 :(得分:0)

Excel在清除数据后保留使用的范围,因此ctrl + end转到该excel实例中使用的最后一个范围的原因。所有数据都已清除,没有任何特殊的单元格被保留以证明它在清除数据后显示Page Break Preview并且它只显示标题。要永久删除保留的已使用范围,您必须保存工作簿,关闭它,然后在清除数据后重新打开它。您会注意到滚动条再次变大,因为保留的范围已被重置。