执行Word邮件合并时删除空行遇类型不匹配错误求助
解决邮件合并后删除表格空行的VBA类型不匹配问题
错误原因
你遇到的类型不匹配错误,是因为Split函数返回的是字符串数组,不能直接和数值0做比较。另外,Word表格的空单元格并非真的是空字符串,它的文本内容默认包含vbCr(回车符)和Chr(7)(段落结束符),直接判断""也无效。
修正后的代码
Sub Delete_row_if_last_cell_is_blank() Application.ScreenUpdating = False Dim Tbl As Table, r As Long, c As Long Dim cellText As String ActiveDocument.MailMerge.Execute With ActiveDocument For Each Tbl In .Tables With Tbl c = .Columns.Count ' 从最后一行往上遍历(避免删除行后索引混乱) For r = .Rows.Count To 2 Step -1 ' 提取单元格文本,去掉末尾的vbCr和Chr(7) cellText = Trim(Left(.Cell(r, c).Range.Text, Len(.Cell(r, c).Range.Text) - 2)) ' 判断处理后的文本是否为空 If cellText = "" Then .Rows(r).Delete End If Next r End With Next Tbl End With Application.ScreenUpdating = True ' 恢复界面刷新 End Sub
关键说明
- 用
Left(.Cell(r,c).Range.Text, Len(...) - 2)去掉单元格文本末尾固定的两个隐藏字符(vbCr和Chr(7)),再用Trim去除可能的空格,确保准确判断空值。 - 遍历行时从最后一行往第二行(跳过表头)倒序处理,避免删除行后导致后续行索引错位。
- 最后必须把
Application.ScreenUpdating恢复为True,否则文档界面会一直处于不刷新状态。
内容的提问来源于stack exchange,提问作者Anh Le
相关产品推荐
相关产品推荐

