【发布时间】:2019-12-15 15:41:32
【问题描述】:
我有一个基于两个不同表格的两个页面的重复模板。我正在研究一个宏来调整整个文档中这些表格的行高,以使行高相同。有时表格会留在页面上,有时它会不断溢出到新页面上。
我一直在尝试几种不同的方法,下面是我最接近让它工作的方法。下面通过查看文档的位置来获取实际的行高。我遇到的问题是表格是跨页的,因此当它到达下一页的一行时会一直显示错误。错误是“测量值必须在 0 pt 和 1584 pt 之间。”
这是我目前使用的代码:
A = 1
B = 2
While B <= ActiveDocument.Tables.Count
Set T1 = ActiveDocument.Tables(A)
Set T2 = ActiveDocument.Tables(B)
Set R1 = T1.Rows
Set R2 = T2.Rows
Set C1 = T1.Columns
Set C2 = T2.Columns
For i = 1 To R1.Count()
If i = R1.Count() Then
Else
H1 = T1.Rows(i + 1).Range.Information(wdVerticalPositionRelativeToPage) _
- T1.Rows(i).Range.Information(wdVerticalPositionRelativeToPage)
H2 = T2.Rows(i + 1).Range.Information(wdVerticalPositionRelativeToPage) _
- T2.Rows(i).Range.Information(wdVerticalPositionRelativeToPage)
If H1 > 0 Or H1 < 1584 Or H2 > 0 Or H2 < 1584 Then
If H1 > H2 Then
R2(i).Height = H1
Else
R1(i).Height = H2
End If
End If
End If
Next
A = A + 1
B = B + 2
Wend
我也尝试使用以下设置高度,在这种情况下不起作用,因为它只获取行的默认高度而不是实际高度。
H1 = R1(i).Height
H2 = R2(i).Height
提前感谢您的帮助。
【问题讨论】:
-
这真是令人困惑。你能用正确的缩进正确格式化代码吗?
-
只有当行 content 跨页时才会出现问题是否正确?如果中断在完整行的末尾,则不会出现问题?在这种情况下,在代码期间禁止该行为:
R1.AllowBreakAcrossPages = false : R2.AllowBreakAcrossPages = false。代码运行后可以切换回来... -
没错 Cindy,只有当行内容跨页时才会发生这种情况。那么我应该在 foreach 中启动它,然后在循环之后将其切换回来吗?
标签: vba ms-word row-height