如果在单元格中找不到内容/文本/数字,则清除整行

我正在写一个VBA脚本,将删除(清除内容)的整个行如果行内的单元格之一被发现是空白或没有任何文本或整数值。

我几乎在那里,但我认为我的代码卡在for循环。 请让我知道如何进一步改善我的代码。

Sub Remove_Rows_BlankData() For SheetCount = 1 To Sheets.Count 'SHEET LEVEL Sheets(SheetCount).Visible = True Sheets(SheetCount).Select StartRow = 2 ' EndRow = Cells(ActiveSheet.UsedRange.Rows.Count, 34) LastRow = ActiveSheet.UsedRange.Rows.Count LastCol = ActiveSheet.UsedRange.Columns.Count Dim myRange As Range Set myRange = Range(Cells(StartRow, 1), Cells(LastRow, LastCol)) 'REMOVE ROWS W/ ANY BLANK CELLS Dim DRow As Variant ' Sets DRow = Row w/ Blank 'From start row to last row Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Select Selection.ClearContents Next End Sub 

我已经重写了你的子,以避免必须Select一个工作表才能使用它。 通过使用With … End With语句来引用循环中的每个工作表,可以处理每个工作表的单元格和属性,而不必为了使用ActiveSheet的固有关联而select工作表。

 Sub Remove_Rows_BlankData() Dim ws As Long, fr As Long, lr As Long, lc As Long On Error Resume Next 'just in case there are no blank cells For ws = 5 To Worksheets.Count 'SHEET LEVEL With Worksheets(ws) .Visible = True 'Sheets(SheetCount).Select 'not necessary to select in order to process fr = 2 ' EndRow = Cells(ActiveSheet.UsedRange.Rows.Count, 34) lr = .UsedRange.Rows.Count lc = .UsedRange.Columns.Count With .Range(.Cells(fr, 1), .Cells(lr, lc)) .SpecialCells(xlCellTypeBlanks).EntireRow.ClearContents End With End With Next ws End Sub 

请注意,在循环内没有创buildvariables(又名Dim )。 只有重新分配的值。


¹ 请参阅如何避免使用在Excel VBAmacros中select更多的方法来摆脱依靠select和激活来实现您的目标。