我正在尝试从带有VBA的Word中的项目符号列表中删除最后一个项目符号/项目。
可以使用以下代码获取空项目,但我不知道如何删除这些项目:
For Each List In ActiveDocument.ListParagraphs
If Len(List.Range.Text = 2) Then
'Delete this list Item
End If
Next
这是列表的一个例子:
我已经尝试通过Range.Text.Select选择项目,但这不起作用。
欢迎任何建议,提前谢谢。
编辑:
问题是删除整个列表项,包括列表项目符号。 list.Range.Delete
不起作用,看起来宏甚至崩溃了。
消息框只出现一次,即使文档中有多次出现,如果我删除list.Range.Delete
,每个空白项目都会出现一次。
Dim list As Paragraph
For Each list In ActiveDocument.ListParagraphs
MsgBox Len(list.Range.Text)
If Len(list.Range.Text) = 2 Then
MsgBox "DELETE"
list.Range.Delete
End If
Next
答案 0 :(得分:1)
对于空列表段落, List.Range.Text = 2
不会是true
。它是1
。
Dim list As Paragraph
For Each list In ActiveDocument.ListParagraphs
If Len(Trim$(list.Range.Text)) = 1 Then
list.Range.Delete
End If
Next
编辑: ActiveDocument
,Trim$
,如评论中所示。
问题是表格单元格中的最后一个段落有一个单元格结束标记作为其最后一个字符,并且可能无法删除。
通用解决方案是在检查段落的长度之前始终从段落中删除最后一个字符。因为应该删除的段落长度为零,我们可以将它们“向左”删除(就像按下退格键一样),它保留了单元格结束标记,也适用于不在表格中的段落。但是,如果删除的段落不为空,则无效:
Dim p As Paragraph
For Each p In ActiveDocument.ListParagraphs
Dim range_to_examine As Range
Set range_to_examine = p.Range
If range_to_examine.End = range_to_examine.Start + 1 Then
range_to_examine.Collapse wdCollapseStart
range_to_examine.Delete wdCharacter, -1
End If
Next