EXCEL VBA 清空Excel工作表(Sheet)的方法
1. 删除所有内容,但保留格式和对象
这种方法只会清除单元格的内容,不会影响格式和嵌入的图表或对象。
Sub ClearSheetContents()Worksheets("Sheet1").Cells.ClearContents
End Sub
2. 删除所有内容和格式,但保留对象
这种方法会删除单元格中的内容和格式,但不会删除如图表、形状等对象。
Sub ClearSheetContentsAndFormats()Worksheets("Sheet1").Cells.Clear
End Sub
3. 删除所有内容、格式和对象
这种方法会彻底清空工作表,包括所有内容、格式和嵌入的对象。
Sub ClearEverything()With Worksheets("Sheet1").Cells.ClearDim shp As ShapeFor Each shp In .Shapesshp.DeleteNext shpEnd With
End Sub
4. 只删除特定区域的内容和格式
如果你只需要清空工作表中的特定区域,可以指定范围。
Sub ClearSpecificRange()Worksheets("Sheet1").Range("A1:D10").Clear
End Sub
5. 删除整个工作表后重新添加
如果彻底删除工作表然后重新开始,可以使用这种方法。这种方法会移除工作表后重新创建一个同名的工作表。
Sub DeleteAndRecreateSheet()Dim wsName As StringwsName = "Sheet1"Application.DisplayAlerts = FalseWorksheets(wsName).DeleteWorksheets.Add(After:=Worksheets(Worksheets.Count)).Name = wsNameApplication.DisplayAlerts = True
End Sub
6. 使用UsedRange清空
如果只想清空工作表中使用过的区域,可以使用UsedRange
属性。
Sub ClearUsedRange()Worksheets("Sheet1").UsedRange.Clear
End Sub
举例
从单元格 F1 开始,清除该点向右和向下的所有已使用范围(即F1及其右侧和下方的所有单元格)。
Sub ClearFromF1DownRight()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Sheet1")' 获取从F1开始向右向下的UsedRangeDim startCell As RangeSet startCell = ws.Range("F1")' 确定结束单元格Dim lastRow As LongDim lastColumn As LonglastRow = ws.Cells(ws.Rows.Count, startCell.Column).End(xlUp).RowlastColumn = ws.Cells(startCell.Row, ws.Columns.Count).End(xlToLeft).Column' 创建区域范围Dim clearRange As RangeSet clearRange = ws.Range(startCell, ws.Cells(lastRow, lastColumn))' 清空内容和格式clearRange.Clear
End Sub
代码解释
- 设置工作表:首先定义并设置工作表对象
ws
。 - 确定起始单元格:设置起始单元格
startCell
为F1。 - 计算结束单元格:
- 使用
End(xlUp)
找到从工作表底部向上的最后一个非空单元格的行号(影响F列)。 - 使用
End(xlToLeft)
找到从工作表最右边向左的最后一个非空单元格的列号(影响第一行)。
- 使用
- 设置清除范围:使用
Range
对象创建一个从起始单元格到计算出的最后一个单元格的范围。 - 执行清除操作:使用
Clear
方法清除该范围内的内容和格式。
这个代码片段会清空从F1开始的所有已使用的单元格,包括它们的内容和格式。