![](/img/trans.png)
[英]Deleting a row on one worksheet based on a cell value in a different sheet
[英]Deleting worksheet row based on value tied to a table
我有一個工作表,上面有兩個表,這些工作表從B列開始。在AI列中有一個COUNTA公式與一個刪除空白行按鈕綁定。 我的代碼可以很好地刪除表行,但我需要它刪除整個工作表行,以便它也刪除A列中的公式,而不是隨着添加或刪除行而不斷向下移動。
麻煩的是,我在工作表上有兩個表,因此我需要執行刪除行操作以僅引用Local_1表,並在循環到達該表末尾時停止循環。
關於如何刪除整個行而不是僅刪除表行的任何建議?
Dim i As Long
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:=pswStr
Rows.EntireRow.Hidden = False
With ActiveSheet.ListObjects("Local_1")
For i = .ListRows.Count To 1 Step -1
If .ListRows(i).Range.Cells(0) <= 0 Then
.ListRows(i).Delete
End If
Next i
End With
為了不束手無策,只需更換
If .ListRows(i).Range.Cells(0) <= 0 Then
.ListRows(i).Delete
End If
同
If .ListRows(i).Range.Cells(1) <= 0 Then 'as Tim Williams mentioned
'.ListRows(i).Delete
ActiveSheet.Rows(Range(.DataBodyRange.Address).Row + i - 1).Delete
End If
但是(為了限制樣式)我強烈建議您使用(聲明)如下變量:
Sub ListEntireRow()
Dim i As Long
Dim oWs As Worksheet
Dim oList As ListObject
Application.ScreenUpdating = False
Set oWs = ActiveSheet
Set oList = oWs.ListObjects("Local_1")
oWs.Unprotect Password:=pswStr
Rows.EntireRow.Hidden = False
With oList
For i = .ListRows.Count To 1 Step -1
If .ListRows(i).Range.Cells(1) <= 0 Then
' .ListRows(i).Delete
oWs.Rows(Range(.DataBodyRange.Address).Row + i - 1).Delete
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
現在,您可以使用工作表的智能感知(oW)和ListObject(oList)了,即可以看到它們的屬性和方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.