如何解决运行时出现问题,带if语句的下一个循环
我试图在Word VBA中的if语句中使用for下一循环。该代码的目的是,如果Word文档的段落不为空,它将选择文本并将其复制并粘贴到新的Word文档中。如果该段为空,则将转到下一行。
我尝试运行代码,每次都只能选择整个Word文档中的第一段,而且我不确定如何让代码运行并转到下一段来创建循环。 / p>
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
解决方法
您有两个问题。
- 您不了解Word对象模型。
- 您已假定没有可见文本的段落的内容为空(“”),这是不正确的。
要解决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)会给出相同的结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。