Excel VBA如何循环冗余条件

时间:2019-04-04 20:11:35

标签: excel vba powerpoint

您好,社区, 我试图通过循环复制粘贴来简化代码。 以下代码成功执行以下操作: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

我如何循环Range("E4").Value = "8"来更改为7,6,5,4 ...并将它们分别分配给Set ppSlide = ppPres.Slides(9),其后为Slide(8),7,6, 5等 预先感谢所有人的帮助

1 个答案:

答案 0 :(得分:1)

使用一个简单的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

但是请注意,通常不需要使用ActivateSelect。您可以简化

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

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

您永远不会使用Sel中的Set Sel = Selection,所以也许您可以摆脱它(还有source吗?)

我猜ActiveWorkbook实际上也是Workbooks("WDWT.xlsm") ...