hc9*_*c91 43 excel vba excel-vba
我有一张大纸,我需要删除所有的内容.当我尝试在没有VBA的情况下简单地清除它时,它进入无响应模式.使用宏时,例如:
Sub ClearContents ()
Application.Calculation = XlManual
Application.ScreenUpdating = False
Sheets("Zeroes").Cells.ClearContents
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)
它也没有回应.最快的方法是什么?
Com*_*ern 84
.Cells范围不限于正在使用的范围,因此您的代码清除1,048,576行和16,384列的内容 - 17,179,869,184个单元格.这需要一段时间.只需清除UsedRange:
Sheets("Zeros").UsedRange.ClearContents
Run Code Online (Sandbox Code Playgroud)
或者,您可以删除工作表并重新添加它:
Application.DisplayAlerts = False
Sheets("Zeros").Delete
Application.DisplayAlerts = True
Dim sheet As Worksheet
Set sheet = Sheets.Add
sheet.Name = "Zeros"
Run Code Online (Sandbox Code Playgroud)
Sta*_*tax 11
从技术上讲,从Comintern公认的解决方法来看,我相信您实际上想删除工作表中的所有单元格.其中删除格式化(参见脚注的例外)等,以及单元格内容.即 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
Run Code Online (Sandbox Code Playgroud)
或者,如果您更愿意尊重计算状态,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
Run Code Online (Sandbox Code Playgroud)
脚注:如果对整列应用了格式,则不会删除它.这包括字体颜色,填充颜色和边框,格式类别(如常规,日期,文本等)以及可能的其他属性,但
删除条件格式,整行格式也是如此.
(如果要将原始数据重复导入工作表,则整列格式化非常有用,因为如果完成简单的仅粘贴值类型导入,它将符合最初应用的格式.)
小智 5
您可以使用.Clear方法:
Sheets("Zeros").UsedRange.Clear
Run Code Online (Sandbox Code Playgroud)
使用此功能,您可以删除单元格或范围的内容和格式,而不会影响工作表的其余部分。