你好,我想刪除一個表的空行,我發現問題。刪除表格的空行
Dim rng As Range
rng = Sheets("NewForecast").ListObjects("Table").Range.Select
If rng.Rows = 0 Then
rng.EntireRow.Delete
End If
我不知道怎麼寫,我試了幾種方法,看了這裏,但無法找到一個具體的解決方案。如果行是完全空的,我想刪除它。任何幫助非常感謝!
你好,我想刪除一個表的空行,我發現問題。刪除表格的空行
Dim rng As Range
rng = Sheets("NewForecast").ListObjects("Table").Range.Select
If rng.Rows = 0 Then
rng.EntireRow.Delete
End If
我不知道怎麼寫,我試了幾種方法,看了這裏,但無法找到一個具體的解決方案。如果行是完全空的,我想刪除它。任何幫助非常感謝!
嘗試像
Dim ws as Worksheet
Set ws = ActiveWorkbook.Worksheets("SHEET NAME HERE")
Dim lRow as long
Dim rng as range
lRow = ws.Range("A" & Rows.Count).end(xlUp).row
'Assuming your table starts in column A, put in start/end row numbers
For each rng in ws.Range("A1:A" & lRow)
If ws.Range("A" & rng.row) = vbNullString then
ws.Rows(rng.row).Delete
End if
Next rng
不工作..第一行和第三行出現錯誤。 –
試試我的更新版本。我在飛行中寫了這個。 – InternInNeed
沒有。此行對於ws.Cells(Cells(start row,1),cells(end row,1))中的每個rng不起作用 –
當試圖在一個表中刪除行,總是用一個落後For
環(For i = 100 to 1 Step -1
例如)。
當檢查某個Range
或是否完全爲空時,WorksheetFunction.CountA
非常方便。
Option Explicit
Sub DeleteEmptyRows()
Dim Rng As Range
Dim LastRow As Long
Dim lRow As Long
With Sheets("NewForecast")
Set Rng = .ListObjects("Table").Range
' find last row in "Table"
LastRow = .ListObjects("Table").Range.Rows.Count
' loop through all "Table" rows, loop backwards when deleting
For lRow = LastRow To 2 Step -1
' use CountA to check if entire row is empty
If WorksheetFunction.CountA(.Rows(lRow)) = 0 Then
.Rows(lRow).EntireRow.Delete
End If
Next
End With
End Sub
沒有工作,代碼似乎對我很好..不知道爲什麼.. –
@LeandroMoreira你有'NewForecast「表中的'表'對象?那個表的名字是「Table」? –
是的。它是表。但我設法工作..看看。 –
這是可能的,而不循環。
然後用這個:
Rows(firstRow & ":" & lastRow).EntireRow.Delete
這可能是昂貴的(需要較長時間),如果你的價值觀的領域是非常大的,但適用於表以及表,快於(更好)循環。
我喜歡你的想法,認爲這可以工作,雖然它說「錯誤13」,類型不匹配 –
是的,我只是扔了一些步驟。 –
我成功了!感謝所有真正打開我的思想的人。看下面,它很簡單,做我想做的事情,宏也變得更快。
Range("Table[#Headers]").Select
Selection.AutoFilter
ActiveSheet.ListObjects("Table").Range.AutoFilter Field:=2, Criteria1:="="
Range("Table").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
Range("Table[#Headers]").Select
ActiveSheet.ShowAllData
我添加了一些推薦的代碼來擺脫宏錄製器喜歡放在那裏的所有「選擇」。不確定它會在第一次嘗試中發揮作用,但希望能有所幫助。可能需要一些調試。 –
請在我的回答下面檢查我的代碼,並讓我知道它是否適合您的需求 –