VBA遍历Wrod所有表格每个单元格,单元格未尾两个回车替换

一、遍历

      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进行删除。果然有效。

猜你喜欢

转载自blog.csdn.net/dzweather/article/details/132156908