VBA循环内的一个循环,第二个循环总是从1开始

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA循环内的一个循环,第二个循环总是从1开始相关的知识,希望对你有一定的参考价值。

下面我有下面的代码遍历一个PPT演示的所有幻灯片。如果幻灯片属于任一部分,而不是隐藏,这将它们保存以适当的名称。我想拿到号码后保存的名称(即TEST#)总是从1开始,在每个部分。因此,如果有是IDSS部分,它开始于幻灯片5的五个幻灯片,那么他们将被保存:IDSS1,IDSS2,等我有下面的方式正好与当前的幻灯片编号保存它。感谢您的任何帮助,您可以提供!

编辑提供更清晰

我在这个PPT演示,所有这些都位于一个特定命名段内的许多不同的幻灯片。对于这个例子,假设有总共6个滑动。幻灯片1-3是一个名为“TEST”的部分,滑动3是隐藏的。幻灯片4-6是在部分“智能决策支持系统”,并没有被隐藏。我需要通过所有幻灯片代码回路,找出哪些是“测试”一节中,并命名为“TEST1”的(因为它被隐藏在滑盖第三跳过)“TEST2”。然后移动到部分“IDSS”并保存幻灯片为“IDSS1”,IDSS2" 和‘IDSS3’,这是我不能在1到重新启动每一节的名称后的数字。希望这使得它更清晰。

Dim sld As Slide

TestSection = SectionIndexOf("Test") 'Name of a section is in the quotes.

IDSSslides = SectionIndexOf("IDSS")

i = 1
For Each sld In ActivePresentation.Slides

    If sld.sectionIndex = TestSection And ActivePresentation.Slides(i).SlideShowTransition.Hidden = msoFalse Then
        ActivePresentation.Slides(i).Export filenamepng & "TEST" & i & ".png", "PNG"
    ElseIf sld.sectionIndex = IDSSslides And ActivePresentation.Slides(i).SlideShowTransition.Hidden = msoFalse Then
        ActivePresentation.Slides(i).Export filenamepng & "IDSS" & i & ".png", "PNG"
    End If
i = i + 1
Next
答案

你的问题是不是真的不清楚,但我认为这是你所需要的,试试吧,让我知道

    Dim sld As Slide

TestSection = SectionIndexOf("Test") 'Name of a section is in the quotes.

IDSSslides = SectionIndexOf("IDSS")

dim i as integer 'Counter for TEST 
dim j as integer'Counter for IDSS 

i = 1 
j=1

For Each sld In ActivePresentation.Slides

    If sld.sectionIndex = TestSection And sld.SlideShowTransition.Hidden = msoFalse Then
        sld.Export filenamepng & "TEST" & i & ".png", "PNG"
        i=i+1
    ElseIf sld.sectionIndex = IDSSslides And sld.SlideShowTransition.Hidden = msoFalse Then
        sld.Export filenamepng & "IDSS" & j & ".png", "PNG"
        j=j+1
    End If
Next

以上是关于VBA循环内的一个循环,第二个循环总是从1开始的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA中for循环语句的用法

Excel VBA中for循环语句的用法

XML Parsing - XPath 表达式试图访问第二个 for 循环内的 xml 元素 [重复]

使用 VBA 将超链接字段写入循环内的另一个工作表范围

vba中五种循环语句的区别

火山中文编程 -- 循环语句