一、遍历
word中遍历所有表格的每个单元格。因为在单元格时会常出错。浪费了不少时间。
Sub a()
Dim doc As Document, tb As Table, ce As cell
Dim rng As Range, p As Paragraph
Set doc = ActiveDocument
For Each tb In doc.Tables
For Each ce In tb.Range.Cells '关键处就是这里一定要用tb.Range.Cells
'具体处理每个单元格中的东西
Set p = ce.Range.Paragraphs.Last '单元格最后一个段落
If Asc(p.Range.Text) = 13 Then '看似没东西,实则若是^13时
Set p = p.Previous '上一个段落
If Not p Is Nothing Then '不能为空,表示至少2个段落
Set rng = p.Range
rng.Collapse wdCollapseEnd
rng.MoveEnd wdCharacter, -1
rng.Delete
End If
End If
Next
Next
End Sub
注意:一定是tb.Range.Cells,否则你去判断合并横向或纵向单元格,会累死人。
二、两个回车符
单元格最后看似是两个回车符,用^p去替换^p^p,无效。然后用vba逐个字符查看了一下,最后两个看似回车符的是^13^13,也即vbCr,用^13去替换^13^13无效,好像很多年前,这样替换就出现过问题,尽管正确,但在单元格的最后两个字符替换时会失效。
所以在单元格时,一般用硬键盘来做。即直接用模拟键盘的删除键来做。做判断有这样的字符(见上面代码),再定位到这个段落的末尾,直接用键盘delete进行删除。果然有效。