代码之家  ›  专栏  ›  技术社区  ›  Mark

删除表的最后一行/防止删除表头

  •  1
  • Mark  · 技术社区  · 7 年前

    我有以下分配给按钮的代码。按下该按钮后,将删除表中的最后一行。表格的顶行是标题。我正在试图找出如何防止/保护标题(B6:M6)及其上方的行在单击“删除行”按钮太多次时被意外删除。任何帮助都将不胜感激。非常感谢。

    Sub DeleteRow()
    
    Dim LastRow As Integer
    
              LastRow = Worksheets("MTO").Range("J" & Rows.count).End(xlUp).Row
              Worksheets("MTO").Rows(LastRow & ":" & LastRow).Delete shift:=xlUp
    End Sub
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   braX    7 年前

    使用 If 语句在删除LastRow之前检查其值。(此外,您还需要使用图纸完全限定对象)

    Sub DeleteRow()
          Dim LastRow As Long
          LastRow = Worksheets("MTO").Range("J" & Worksheets("MTO").Rows.count).End(xlUp).Row
          If LastRow > 6 Then
              Worksheets("MTO").Rows(LastRow & ":" & LastRow).Delete shift:=xlUp
          End If
    End Sub
    

    If Statements

    或者使用 With

    Sub DeleteRow()
      Dim LastRow As Long
      With Worksheets("MTO")
          LastRow = .Range("J" & .Rows.count).End(xlUp).Row
          If LastRow > 6 Then
              .Rows(LastRow & ":" & LastRow).Delete shift:=xlUp
          End If
      End With
    End Sub
    
        2
  •  0
  •   Subodh Tiwari sktneer    7 年前

    最好是声明工作表变量,以使代码更具可读性。

    你可以试试这样的。。。

    Sub DeleteRow()
        Dim ws As Worksheet
        Dim LastRow As Integer
        Set ws = Worksheets("MTO")
        LastRow = ws.Range("J" & Rows.Count).End(xlUp).Row
        If LastRow > 6 Then ws.Rows(LastRow).Delete
    End Sub