你好,我的工作簿里面有多张表。我创建了宏,删除这些工作表中的两列数据(没有标题)。我使用.Find
查找标头MEASURED VALUE
,因此宏只会删除找到的标头下方的数据。这是我的代码:
Sub Macro1()
Dim ws As Worksheet
Dim rng As Range
Dim r As Integer
Dim c As Integer
For Each ws In ThisWorkbook.Worksheets
Debug.Print ws.Name
r = ws.Range("A1").CurrentRegion.Find(what:="MEASURED VALUE", lookat:=xlWhole).Row
c = ws.Range("A1").CurrentRegion.Find(what:="MEASURED VALUE", lookat:=xlWhole).Column
Range(ws.Cells(2, c), ws.Cells(r, c).End(xlDown)).ClearContents
Next ws
End Sub
此代码可用于删除找到的列和每张表中的数据。但是有些行可能是空的。我的问题是如何使代码删除所有数据,而不仅仅是空行上方的数据。谢谢。
答案 0 :(得分:3)
试试这个:
Range(ws.Cells(2, c), ws.Cells(r, c).End(xlDown)).ClearContents
而不是:
ws.Rows.Count
您的方法可以这样形象化:
一直向下看,直到第一个空白单元格。
另一方面,我的方法就像:
转到列的底部(使用
ID
实现)并向上移至第一个非空白单元格。