Excel VBA如何循环冗余条件

Excel VBA如何循环冗余条件,excel,vba,powerpoint,Excel,Vba,Powerpoint,大家好, 我试图通过复制粘贴的循环来简化我的代码。 下面的代码在1从一个产品刷新一个单元格,2将刷新的表复制到特定的幻灯片编号时成功 我需要将这个过程复制7次——为了得到一个长代码,我想我可以使用下面的循环条件。 -将产品从8刷新为1,计算 -然后将excel表格复制粘贴到幻灯片中 组合是这样的。 产品表转到演示幻灯片 产品8进入幻灯片9 产品7进入幻灯片8等 Option Explicit Sub ExportToPPT() Dim ppApp As PowerPoint.Appli

大家好, 我试图通过复制粘贴的循环来简化我的代码。 下面的代码在1从一个产品刷新一个单元格,2将刷新的表复制到特定的幻灯片编号时成功

我需要将这个过程复制7次——为了得到一个长代码,我想我可以使用下面的循环条件。 -将产品从8刷新为1,计算 -然后将excel表格复制粘贴到幻灯片中 组合是这样的。 产品表转到演示幻灯片 产品8进入幻灯片9 产品7进入幻灯片8等

Option Explicit
Sub ExportToPPT()

    Dim ppApp As PowerPoint.Application
    Set ppApp = New PowerPoint.Application
    Dim Sel As Range
    Dim source As Range`

    Workbooks("WWDWT.xlsm").Activate
    Sheets("Graph Data").Select
    Range("E4").Value = "8"
    Application.Calculate

    Set Sel = Selection
    Set source = ActiveWorkbook.Sheets("waterfall").Range("D1")
    ActiveWorkbook.Sheets("waterfall").Range("D1:AE40").Copy

    Set ppSlide = ppPres.Slides(9)
    ppSlide.Shapes.PasteSpecial ppPasteBitmap

End Sub
我如何循环将范围4.Value=8更改为7,6,5,4。。。并将它们分配到集合ppSlide=ppPres.Slides9中,该集合后面是Slide8、7、6、5等。。 提前感谢所有人的帮助

使用一个简单的for循环,如下所示:

Sub ExportToPPT()
    ...
    Dim i as Long

    For i = 8 to 1 Step - 1
        Workbooks("WWDWT.xlsm").Activate
        Sheets("Graph Data").Select
        Range("E4").Value = i
        Application.Calculate

        Set Sel = Selection
        Set source = ActiveWorkbook.Sheets("waterfall").Range("D1")
        ActiveWorkbook.Sheets("waterfall").Range("D1:AE40").Copy

        Set ppSlide = ppPres.Slides(i + 1)
        ppSlide.Shapes.PasteSpecial ppPasteBitmap
    Next i

End Sub
但请注意,通常不需要使用Activate和Select。你可以简化

Workbooks("WWDWT.xlsm").Activate
Sheets("Graph Data").Select
Range("E4").Value = i

而且你从不使用Set Sel=Selection中的Sel,所以也许你也可以去掉它和source


我猜ActiveWorkbook实际上也是WorkbookWDWT.xlsm…

使用For循环。将Dim i添加为Long,然后将i=8添加到1步骤-1,然后将range4.Value=i,然后设置ppSlide=ppPres.Slidesi+1,最后是下一个i。@BigBen post作为答案。。。在评论中读到这一点太糟糕了。是中段,但不会重复you@Cyril哈哈,我也发了半篇文章,不想对Selection和ActiveWorkbook的使用发表评论,好吧,我会加上作为回答。谢谢@BigBen-这的确是正确的,ActiveWorkbook是WDWT文件-我知道select在VBA中不是一个好用法,但我想我只能用一次。让我试试你的proposalIt工作完美-非常感谢你的演示@BigBenGreat,快乐编码!
Workbooks("WWDWT.xlsm").Sheets("Graph Data").Range("E4").Value = i