Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用if语句运行下一个循环时出现问题_Vba_For Loop_If Statement_Word - Fatal编程技术网

Vba 使用if语句运行下一个循环时出现问题

Vba 使用if语句运行下一个循环时出现问题,vba,for-loop,if-statement,word,Vba,For Loop,If Statement,Word,我试图在Word VBA中使用带有if then语句的for next循环。该代码的目的是,如果Word文档的段落不是空的,它将选择文本并将其复制并粘贴到新的Word文档中。如果段落为空,它将转到下一行 我试着运行代码,每次,它只能选择整个Word文档中的第一段,我不确定如何让代码运行并继续到下一段创建循环 Sub selectparawithtext() Dim opara As Paragraphs Dim x As Integer For

我试图在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
Sub-selectparawithtext()
Dim opara作为段落
作为整数的Dim x
对于x=1到24
如果是第“”段,则
选择。展开段落
选择,复制
文档。添加文档
Selection.PasteAndFormat(WDFormat原始格式)
其他的
Selection.MoveDown单位:=wdLine,计数:=1
如果结束
下一个
端接头
您有两个问题

  • 您不理解对象模型这个词
  • 您假设没有可见文本的段落具有空内容(“”),这是不正确的
  • 要解决1,您需要迭代您希望处理的故事范围中的段落

    Dim myPara As Paragraph
    For Each myPara In ActiveDocument.StoryRanges(wdMainTextStory).Paragraphs
        <your code>
    Next
    

    值得注意的是,“Item”是段落对象的默认属性,因此,段落(x)和段落.Item(x)似乎给出了相同的结果。

    为什么要这样循环?为什么不为ActiveDocument.段落中的每个pgraph使用循环
    ,然后使用
    如果Len(Trim(pgraph.Range.Text))=0,那么
    如果代码有效,将把每个非空段落放入一个单独的新文档中。你确定这就是你想要的吗?你有两个问题。1.如上所述,您不理解对象模型这个词。
    
    \<document qualifier>.\<storyrange qualifier>.paragraphs.item(x).range.text.
    
    ActiveDocument.StoryRanges(wdmaintextstory).paragraphs.item(x).range.text