如大家所见,我用的找出所有标题的办法很傻很雅克蜥,用了这么多条件: If str_Input.Style.NameLocal <> "正文" _ And str_Input.Style.NameLocal <> "超链接" _ And str_Input.Style.Type <> wdStyleTypeTable _ '此处把表格也跳过去,不过事实上有时也会在表格中加段再加内容,反反复复很烦人 Then If str_Input.Style.ListLevelNumber <> 0 _ '好像正文的时候是0,不过还有一些古怪行为也被标为0了,我将它全部跳出。 Or str_Input.Style.AutomaticallyUpdate = False _ '这是为了跳开目录的 Then 谁知道更好的办法把这个四不像的程序换换血?另,word VBA 的资料不多,心里着急有劲使不上哪位大虾有好资料的链接,介绍几个? (Access的也可以~~)
解决了,到头还是BOSS回来三下五除二了。 VBA中的FOR循环,原来内存只记住了初始数据的次数,所以无论doc1.Paragraphs.Count怎么变,它都不鸟我,到次数自动退出了。 于是解决方法就出来了,为循环多定义了一个变量,和大家分享一下: Dim Cur_Org_Para_No As Long NumPara = doc1.Paragraphs.Count i_NumPara = 1 For Cur_Org_Para_No = 1 To NumPara …… i_NumPara = i_NumPara + 1 Next
1 把On Error GoTo continue注释掉之后没保存??
2 “i_NumPara = i_NumPara + 7” 干嘛用的?? 会不会破坏你的循环用意??
设过断点,看了几遍都没什么变化,而且那一段的格式是“标题4”,去掉之前的段落重新运行,则能识别此段,不过到后面又会无故跳出循环。纳闷啊~to lb_bn:
恩,我有把那些可能不同的属性都拖到监控里面然后一步步走,不过貌似每次循环都很理智,到了某一点后就不回头了,直接运行NEXT后面的内容,至于是哪一点跳出来,这还要取决于不同的文章。不过基本上是那篇文章都会跳出来一下。to Happylessness:
1 把On Error GoTo continue注释掉之后保存了,而且没注掉的时候貌似这两句也没起过作用。。
2 “i_NumPara = i_NumPara + 7” 干嘛用的?? 会不会破坏你的循环用意?? 这里我比较傻,不过我不会其他的办法,因为我是在select出来的段落(我们暂且称之为段p)之前加表格 ,那么自然i_NumPara 的内容 doc1.Paragraphs.Count都会变,我希望下一次的循环从(段p+1)段继续读,而不是把我已经加的表格也遍历一遍。
If str_Input.Style.NameLocal <> "正文" _
And str_Input.Style.NameLocal <> "超链接" _
And str_Input.Style.Type <> wdStyleTypeTable _ '此处把表格也跳过去,不过事实上有时也会在表格中加段再加内容,反反复复很烦人
Then
If str_Input.Style.ListLevelNumber <> 0 _ '好像正文的时候是0,不过还有一些古怪行为也被标为0了,我将它全部跳出。
Or str_Input.Style.AutomaticallyUpdate = False _ '这是为了跳开目录的
Then
谁知道更好的办法把这个四不像的程序换换血?另,word VBA 的资料不多,心里着急有劲使不上哪位大虾有好资料的链接,介绍几个? (Access的也可以~~)
VBA中的FOR循环,原来内存只记住了初始数据的次数,所以无论doc1.Paragraphs.Count怎么变,它都不鸟我,到次数自动退出了。
于是解决方法就出来了,为循环多定义了一个变量,和大家分享一下:
Dim Cur_Org_Para_No As Long
NumPara = doc1.Paragraphs.Count
i_NumPara = 1
For Cur_Org_Para_No = 1 To NumPara
……
i_NumPara = i_NumPara + 1
Next
其他都没变。
:)
大家好心情!