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