微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将格式应用于 VBA 宏 (Word) 中的非连续单元格范围?

如何解决如何将格式应用于 VBA 宏 (Word) 中的非连续单元格范围?

我需要对 MS Word 文档中表格的矩形区域执行一些简单的任务。假设它包含 10 列和 20 行。例如,我需要将单元格中的文本从第 2 列、第 3 行到第 8 列、第 18 行居中。我试图获得一个在指定位置开始和结束的范围,但它包括例如来自第 9 和 10 列以及第 3 至 17 行。以及最左侧列的相应单元格。另一方面,如果我调用此范围的 Select 方法,它会根据需要选择一个矩形区域。但是,我不想使用选择,因为它们会使文本闪烁。

作为解决方案,我遍历这些单元格,但需要很长时间。

解决方法

«作为一个解决方案,我遍历这些单元格,但需要很长时间。»

下面的代码,包括错误检查,对于单个表花费的时间不到 1 秒:

Sub Demo()
Application.ScreenUpdating = False
Dim eTime As Single: eTime = Timer
Dim Tbl As Table,r As Long,Rng As Range
For Each Tbl In ActiveDocument.Tables
  With Tbl
    If .Rows.Count > 17 Then
      If .Columns.Count > 7 Then
        For r = 3 To 18
          Set Rng = .Cell(r,2).Range
          With Rng
            .End = .Rows(1).Cells(8).Range.End
            .ParagraphFormat.Alignment = wdAlignParagraphCenter
          End With
        Next
      End If
    End If
  End With
Next
Application.ScreenUpdating = True
eTime = (Timer - eTime + 86400) Mod 86400 ' Just in case execution time spans midnight
MsgBox "Execution took " & Format(eTime / 86400,"hh:mm:ss")
End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。