[英]Problem when running for, next loop with if statement
我正在尝试在 Word VBA 中使用带有 if then 语句的 for next 循环。 该代码的目的是,如果Word文档的段落不为空,它会选择文本并将其复制并粘贴到一个新的Word文档中。 如果段落为空,它将直接转到下一行。
我试过运行代码,每次它只能选择整个 Word 文档中的第一段,我不确定如何让代码运行并继续下一段以创建循环。
Sub selectparawithtext()
Dim opara As Paragraphs
Dim x As Integer
For x = 1 To 24
If Paragraphs <> "" Then
Selection.Expand wdParagraph
Selection.Copy
Documents.Add wdNewBlankDocument
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Else
Selection.MoveDown Unit:=wdLine, Count:=1
End If
Next
End Sub
你有两个问题。
要解决 1,您需要遍历您希望使用的故事范围中的段落。
Dim myPara As Paragraph
For Each myPara In ActiveDocument.StoryRanges(wdMainTextStory).Paragraphs
<your code>
Next
文档正文中的段落有快捷方式(例如 .contents.paragraphs 或仅 .paragraphs 但最好理解 Word 文档由许多故事范围组成并指定您希望使用的故事范围工作)。
第二点是单词段落由段落标记字符终止,该标记字符是段落文本的一部分。 因此,段落永远不能有空值,因为它们的最小长度始终为 1 个字符。
段落的文本是段落范围对象的一部分。 因此,要访问段落 x 的文本,您将使用
\<document qualifier>.\<storyrange qualifier>.paragraphs.item(x).range.text.
例如
ActiveDocument.StoryRanges(wdmaintextstory).paragraphs.item(x).range.text
值得注意的是,'Item' 是段落对象的默认属性,因此为什么 Paragraphs(x) 和 Paragraphs.Item(x) 似乎给出了相同的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.