簡體   English   中英

根據綁定到表的值刪除工作表行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM