我有一张大纸,我需要删除所有内容。当我尝试在没有VBA的情况下简单地清除它时,它进入无响应模式。使用宏时,例如:
Sub ClearContents ()
Application.Calculation = XlManual
Application.ScreenUpdating = False
Sheets("Zeroes").Cells.ClearContents
Application.ScreenUpdating = True
End Sub
它也没有回应。什么是最快捷的方式?
答案 0 :(得分:79)
.Cells范围不限于正在使用的范围,因此您的代码清除1,048,576行和16,384列的内容 - 17,179,869,184个单元格。这需要一段时间。只需清除UsedRange:
Sheets("Zeros").UsedRange.ClearContents
或者,您可以删除工作表并重新添加:
Application.DisplayAlerts = False
Sheets("Zeros").Delete
Application.DisplayAlerts = True
Dim sheet As Worksheet
Set sheet = Sheets.Add
sheet.Name = "Zeros"
答案 1 :(得分:11)
从技术上讲,来自共产国际公认的解决方案,
我相信你真的想删除工作表中的所有单元格。其中删除格式化(参见脚注的例外)等,以及单元格内容。
即Sheets("Zeroes").Cells.Delete
与UsedRange,ScreenUpdating和Calculation相结合,跳过它几乎是表面上的:
Sub DeleteCells ()
Application.Calculation = XlManual
Application.ScreenUpdating = False
Sheets("Zeroes").UsedRange.Delete
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub
或者,如果您更愿意尊重计算状态,Excel目前位于:
Sub DeleteCells ()
Dim SaveCalcState
SaveCalcState = Application.Calculation
Application.Calculation = XlManual
Application.ScreenUpdating = False
Sheets("Zeroes").UsedRange.Delete
Application.ScreenUpdating = True
Application.Calculation = SaveCalcState
End Sub
脚注:如果格式化应用于整列,则不会删除它。 这包括字体颜色,填充颜色和边框,格式类别(如常规,日期,文本等)以及其他属性,但
删除了条件格式,整行格式化。
(整列格式化非常有用,如果您将原始数据重复导入工作表,因为如果完成简单的仅粘贴值类型导入,它将符合最初应用的格式。)
答案 2 :(得分:5)
您可以使用.Clear方法:
Sheets("Zeros").UsedRange.Clear
使用此功能,您可以删除单元格或范围的内容和格式,而不会影响工作表的其余部分。
答案 3 :(得分:0)
试试这个:
Sub clear_sht
Dim sht As Worksheet
Set sht = Worksheets(GENERATOR_SHT_NAME)
col_cnt = sht.UsedRange.Columns.count
If col_cnt = 0 Then
col_cnt = 1
End If
sht.Range(sht.Cells(1, 1), sht.Cells(sht.UsedRange.Rows.count, col_cnt)).Clear
End Sub