首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除具有特定Shading.BackgroundPatternColor的所有行(从选定的表中)

如何删除具有特定Shading.BackgroundPatternColor的所有行(从选定的表中)
EN

Stack Overflow用户
提问于 2019-03-28 00:59:48
回答 1查看 87关注 0票数 1

我希望将快捷键与可在Word文档的某些表上使用的VBA宏相关联。此宏应遍历所选表的所有行,并删除具有特定Shading.BackgroundPatternColor的行

我已经尝试了以下代码:

代码语言:javascript
复制
Sub DeleteRowWithShading()


Dim oRow As Word.Row

  For Each oRow In Selection.Rows
        If oRow.Shading.BackgroundPatternColor = -721354855 Then
            oRow.Delete
        End If
  Next oRow

End Sub

表中所有行的循环都是正确的,但是没有像预期的那样删除行。

我是VBA的新手,所以感谢大家的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-28 22:52:21

当在循环期间删除集合的元素时,就会出现问题。删除操作会将该项从集合中移除,从而停止内部计数。

有两种基本的方法可以解决这个问题。

1)从后到前遍历项目。由于要从集合中删除的内容在末尾,因此不会抛出计数:

代码语言:javascript
复制
Sub DeleteRowWithShading()
    Dim oRow As Word.Row
    Dim tbl As Word.Table
    Dim nrRows As Long, rowCounter As Long
    Dim check As Long

    Set tbl = Selection.Tables(1)
    nrRows = tbl.Rows.Count

  For rowCounter = nrRows To 1 Step -1
        Set oRow = tbl.Rows(rowCounter)
        If oRow.Shading.BackgroundPatternColor = -721354855 Then
            check = check + 1
            oRow.Delete
        End If
  Next
  Debug.Print "Nr of rows deleted: " & check

End Sub

2)在第一次循环中将项添加到数组或自定义集合中,然后循环数组/集合以删除所有项(行)。

代码语言:javascript
复制
Sub DeleteRowWithShadingInArray()
    Dim oRow As Word.Row
    Dim tbl As Word.Table
    Dim RowsToDelete() As Variant
    Dim check As Long, itemNr As Long

    Set tbl = Selection.Tables(1)
    itemNr = 0
    For Each oRow In tbl.Rows
        ReDim Preserve RowsToDelete(itemNr)
        If oRow.Shading.BackgroundPatternColor = -721354855 Then
            Set RowsToDelete(itemNr) = oRow
            itemNr = itemNr + 1
        End If
    Next

    itemNr = 0

    For itemNr = 0 To UBound(RowsToDelete)
            check = check + 1
            RowsToDelete(itemNr).Delete
    Next

    Debug.Print "Nr of rows deleted: " & check

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55382744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档