Vba MS Word-查找包含换行文本的表行
我有一个表格,其中所有单元格都设置为Vba MS Word-查找包含换行文本的表行,vba,ms-word,word-table,Vba,Ms Word,Word Table,我有一个表格,其中所有单元格都设置为true。其中一些文本的长度超过单元格宽度,因此被包装。我需要找到它们(文本较长)并将它们设置为True,但不知道如何设置 我试图读取行/单元格.height.,但无论如何设置,它都不会返回实际的行/单元格高度,而是返回最小高度 谢谢你的提示 确定单元格内容是否换行的一种方法是比较单元格内容开头和结尾的行号,如下面的代码示例所示 Word对象模型提供了信息属性,该属性具有许多枚举成员,包括wdFirstCharacterLineNumber 在循环中检查表中
true
。其中一些文本的长度超过单元格宽度,因此被包装。我需要找到它们(文本较长)并将它们设置为True,但不知道如何设置
我试图读取行/单元格.height.
,但无论如何设置,它都不会返回实际的行/单元格高度,而是返回最小高度
谢谢你的提示 确定单元格内容是否换行的一种方法是比较单元格内容开头和结尾的行号,如下面的代码示例所示
- Word对象模型提供了
属性,该属性具有许多枚举成员,包括信息
wdFirstCharacterLineNumber
- 在循环中检查表中的每个单元格。确定单元格中第一个字符的行号后,范围将折叠到其端点(即下一个单元格的起点),然后向后移动一个字符(将其放在原始单元格中),并检查单元格中最后一个字符的行号
- 如果第二个大于第一个,则将单元格添加到数组中。(注意:您可能可以直接处理该单元格。但如果这可能会影响其他单元格,最好先将它们全部添加到一个数组中,然后再处理该数组。)
- 最后,数组被循环,每个单元格的格式为
FitText=True
谢谢你的回答!你(或其他任何人)能解释一下吗?我看了文档,但不明白。英语不是我的母语,已知的单词
Collapse
的翻译在这种情况下对我来说没有意义。(与膨胀相反的坍塌,或因失去稳定性而坍塌)。谢谢。@LluserCollapse
与expand相反。想象一个范围
就像一个不可见的选择-如果按箭头键,选择“折叠”到一个闪烁点wdCollapseEnd
转到指定的范围的末尾(相当于右箭头键)wdCollapseStart
到范围的开始处(相当于左箭头键)。
Sub ChangeCellWrapForLongLinesOfText()
Dim tbl As Word.Table
Dim cel As Word.Cell
Dim rngCel As Word.Range
Dim multiLineCells() As Word.Cell
Dim firstLine As Long
Dim lastLine As Long
Dim i As Long, x As Long
Set tbl = ActiveDocument.Tables(1)
For Each cel In tbl.Range.Cells
Set rngCel = cel.Range
firstLine = rngCel.Information(wdFirstCharacterLineNumber)
rngCel.Collapse wdCollapseEnd
rngCel.MoveEnd wdCharacter, -1
lastLine = rngCel.Information(wdFirstCharacterLineNumber)
If lastLine > firstLine Then
ReDim Preserve multiLineCells(i)
Set multiLineCells(i) = cel
i = i + 1
End If
Next
'Debug.Print i, UBound(multiLineCells())
For x = LBound(multiLineCells()) To UBound(multiLineCells())
'Debug.Print multiLineCells(x).Range.Text
multiLineCells(x).FitText = True
Next
End Sub