[英]Delete entire row in Excel VBA
我在下面的代碼中編寫了刪除A,F和G列中沒有值的行。
Sub DeleteRawBlank()
Dim Cnt As Long
Dim RowCnt As Integer
RowCnt = Worksheets("Raw").UsedRange.Rows.Count
Worksheets("Raw").Activate
For Cnt = RowCnt To 2 Step -1
If Trim(Worksheets("Raw").Cells(Cnt, "A").Value) <> "" And
Trim(Worksheets("Raw").Cells(Cnt, "F").Value) <> "" And
Trim(Worksheets("Raw").Cells(Cnt, "G").Value) <> "" Then
Rows(Cnt).Delete
End If
Next Cnt
End Sub
但這是行不通的。 任何幫助請
您應該對.Cells
屬性中的列使用整數值。
您還應該利用With...End With
語句 。
Sub delete_row()
Dim Cnt As Long
Dim RowCnt As Integer
Dim wb As Workbook, wsRaw As Worksheet
Set wb = ThisWorkbook
Set wsRaw = wb.Worksheets("Raw")
With wsRaw
RowCnt = .Range("A" & .Rows.Count).End(xlUp).Row
For Cnt = RowCnt To 2 Step -1
If Trim(.Cells(Cnt, 1).Value) <> "" And _
Trim(.Cells(Cnt, 6).Value) <> "" And _
Trim(.Cells(Cnt, 7).Value) <> "" Then
Rows(Cnt).Delete
End If
Next Cnt
End With
End Sub
使用= Empty
而不是<> ""
如果Cell
包含一些數據, <> ""
將返回True
。
Sub DeleteRawBlank()
Dim Cnt As Long
Dim RowCnt As Integer
RowCnt = Worksheets("Raw").UsedRange.Rows.Count
Worksheets("Raw").Activate
For Cnt = RowCnt To 2 Step -1
If Trim(Worksheets("Raw").Cells(Cnt, "A").Value) = Empty And _
Trim(Worksheets("Raw").Cells(Cnt, "F").Value) = Empty And _
Trim(Worksheets("Raw").Cells(Cnt, "G").Value) = Empty Then
Rows(Cnt).Delete
End If
Next Cnt
End Sub
僅當A
, F
, G
列中A
所有單元格都不為空時,您的代碼才會刪除行。 因此,如果您需要刪除A
, F
, G
空單元格的行,則應在代碼中使用=
而不是<>
,它將可以正常工作。
此外,您可能還會遇到另一個問題,變量的integer
類型具有有限的范圍(從-32768到32767),因此,如果使用范圍的行數超出該范圍,則會收到錯誤消息。
另外,在使用范圍不是從A1
開始的情況下,請注意usedrange.rows.count
或usedrange.columns.count
,因為UsedRange.Rows.Count
對使用范圍內的行數進行計數,而不是對工作表中的行進行計數,因此要進行計數使用范圍內的行數不一定總是等於工作表中最后使用的行。
我已經嘗試簡化您的代碼,並且我認為它可以為您正常工作:
Sub DeleteRawBlank()
Dim Cnt&, RowCnt&
With Worksheets("Raw")
RowCnt = .Cells.Find("*", , , , , xlPrevious).Row
For Cnt = RowCnt To 2 Step -1
If WorksheetFunction.Trim(.Cells(Cnt, "A") & .Cells(Cnt, "F") & .Cells(Cnt, "G")) = "" Then
.Rows(Cnt).Delete
End If
Next Cnt
End With
End Sub
還有一件事情, trim
將只刪除左右兩側的空格,但不會刪除字符串內的多余空格,因此,如果需要刪除所有多余的空格,則應使用WorksheetFunction.Trim
,就像下面的示例:
trim(" AB")
將返回"AB"
trim$("AB ")
將返回"AB"
WorksheetFunction.Trim(" AB ")
將返回"AB"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.