所以我一直在研究一个我从我的同事那里继承的宏 . 问题是,包括主要数据在内,创建了超过一百万个空白行 . 此工作表是从源表创建的,包含30000行 .
我是VBA菜鸟,所以我一直在仔细阅读代码,希望能够理解它 . 过去四个小时我一直在努力,但我没有取得任何进展 . 我决定创建一个单独的宏,在事后删除空白行 . 只有一个问题:我必须运行宏两次才能摆脱百万个空白行 .
第一次运行它时,黑色边框(从第一张纸上转移)被删除,留下一百万个无边界行 . 我再次运行它,留下最后一个使用过的单元格 . 我只是不明白发生了什么 . 这是我一直在使用的代码 .
Sub DeleteUnused()
Dim myLastRow As Long
Dim myLastCol As Long
Dim wks As Worksheet
Dim dummyRng As Range
For Each wks In ActiveWorkbook.Worksheets
With wks
myLastRow = 0
myLastCol = 0
Set dummyRng = .UsedRange
On Error Resume Next
myLastRow = _
.Cells.Find("*", after:=.Cells(1), _
LookIn:=xlFormulas, lookat:=xlWhole, _
searchdirection:=xlPrevious, _
searchorder:=xlByRows).Row
myLastCol = _
.Cells.Find("*", after:=.Cells(1), _
LookIn:=xlFormulas, lookat:=xlWhole, _
searchdirection:=xlPrevious, _
searchorder:=xlByColumns).Column
On Error GoTo 0
If myLastRow * myLastCol = 0 Then
.Columns.Delete
Else
.Range(.Cells(myLastRow + 1, 1), _
.Cells(.Rows.Count, 1)).EntireRow.Delete
.Range(.Cells(1, myLastCol + 1), _
.Cells(1, .Columns.Count)).EntireColumn.Delete
End If
End With
Next wks
End Sub
2 回答
根据我的评论,这将删除空白行 . 只需将此作为创建空行的宏的最后一行 .
这是我用来清理所有空白行和空白列的宏 .
您可以决定是否只想删除空行,并保留空列 .