问题描述
我需要对 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