循环没有做,即使我有一个

时间:2017-08-08 15:19:35

标签: excel-vba loops powerpoint-vba vba excel

我的代码如下。基本上每个powerpoint表应该只容纳32行的excel数据(和标题行),所以我希望幻灯片数量每32行增加,而excel循环遍历行以复制数据。很高兴尝试进一步解释,如果这没有意义,但想为我的问题提供某种形式的背景。

据我所知,我有一个做,直到,循环,if和结束if。但我没有做到' Loop错误,我不知道为什么。

n = 2

Account_no occupant_code current_read_date
---------- ------------- -----------------
67890      2             7/17/2017 12:00:00 AM
非常感谢!

1 个答案:

答案 0 :(得分:0)

仍然不确定您的数据设置以及幻灯片的外观,但如果每个幻灯片上的形状都命名为表3,那么表#中总共有33行(标题+ 32行)并且您的数据开始于excel表格中的第5行,这可能会有效。 Excel工作表的单元格引用可能需要更加精确,如Worksheets(“Sheet1”)。cells(n + 3,1).text 这是一些未经测试的代码,可以帮助您实现目标。

N= 2
Do Until n = lrow
  Set oPPTShape = oPPTFile.Slides(SlideNum).Shapes("Table 3")
    With oPPTShape.Table
      if n < 34 then    'this is because for the first slide n< 34 there is no 0 or 1 for n mod 33
           If n Mod 33 <> 0 Then
                   .Cell(n, 1).Shape.TextFrame.TextRange.Text = Cells(n + 3, 1).Text
                   .Cell(n, 2).Shape.TextFrame.TextRange.Text = Cells(n + 3, 2).Text
                   .Cell(n, 3).Shape.TextFrame.TextRange.Text = Cells(n + 3, 3).Text
                   .Cell(n, 4).Shape.TextFrame.TextRange.Text = Cells(n + 3, 4).Text
                   .Cell(n, 5).Shape.TextFrame.TextRange.Text = Cells(n + 3, 5).Text
                n = n + 1
           Else  ' for when n = 33 
                   .Cell(n, 1).Shape.TextFrame.TextRange.Text = Cells(n + 3, 1).Text
                   .Cell(n, 2).Shape.TextFrame.TextRange.Text = Cells(n + 3, 2).Text
                   .Cell(n, 3).Shape.TextFrame.TextRange.Text = Cells(n + 3, 3).Text
                   .Cell(n, 4).Shape.TextFrame.TextRange.Text = Cells(n + 3, 4).Text
                   .Cell(n, 5).Shape.TextFrame.TextRange.Text = Cells(n + 3, 5).Text
                n = n + 1
          End If
           SlideNum = SlideNum + 1
   Else     ' when n > 33
    x = n mod 33
           If n Mod 33 <> 0 Then

                   .Cell(x + 1, 1).Shape.TextFrame.TextRange.Text = Cells(n + 3, 1).Text
                   .Cell(x + 1, , 2).Shape.TextFrame.TextRange.Text = Cells(n + 3, 2).Text
                   .Cell(x + 1, , 3).Shape.TextFrame.TextRange.Text = Cells(n + 3, 3).Text
                   .Cell(x + 1, , 4).Shape.TextFrame.TextRange.Text = Cells(n + 3, 4).Text
                   .Cell(x + 1, , 5).Shape.TextFrame.TextRange.Text = Cells(n + 3, 5).Text

                n = n + 1
           Else  ' for when n = 66 or 99, etc.... start of next slide
              SlideNum = SlideNum + 1
                   .Cell(x + 1, 1).Shape.TextFrame.TextRange.Text = Cells(n + 3, 1).Text
                   .Cell(x + 1, , 2).Shape.TextFrame.TextRange.Text = Cells(n + 3, 2).Text
                   .Cell(x + 1, , 3).Shape.TextFrame.TextRange.Text = Cells(n + 3, 3).Text
                   .Cell(x + 1, , 4).Shape.TextFrame.TextRange.Text = Cells(n + 3, 4).Text
                   .Cell(x + 1, , 5).Shape.TextFrame.TextRange.Text = Cells(n + 3, 5).Text
          End If
  End If ' for checking n<34
End With
Loop