VBA для цикла только итерация один раз - PullRequest
0 голосов
/ 02 ноября 2018

У меня проблемы с этим VBA - цикл for выполняет итерацию только один раз, и при увеличении он говорит, что метод «Ячейки» в объекте «Рабочий лист» завершился ошибкой. Это сработало на первой итерации, хотя ... Я думаю, что моя функция StatusUpdate нарушает ее, но когда я закомментирую ее, она все равно не сработает. Кто-нибудь чем-нибудь выделяется в основном сабе? Рады опубликовать больше кода, если это необходимо.

Sub CreateSlides()

Dim XLapp As New Excel.Workbook

Dim WS As New Excel.Worksheet

Set XLapp = Excel.Workbooks.Open("J:\OPERATIONS\CAPITAL PROJECTS\Clara\test.xlsx")

Set WS = XLapp.Sheets(1)

XLapp.Activate
WS.Select

Dim CD As Integer
CD = 0

Dim cell As Range

Dim i As Integer

Dim LastRow As Integer
LastRow = WS.Cells(WS.Rows.Count, 1).End(xlUp).Row

'Delete old slides
If ActivePresentation.Slides.Count > 1 Then
    Call DeleteSlides
End If

'Loop through each used row in Column A
For i = 2 To LastRow

    CD = WS.Cells(i, 35).Value

    ActivePresentation.Slides(1).Copy
    ActivePresentation.Slides.Paste (ActivePresentation.Slides.Count + 1)

    ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes("project").TextFrame.TextRange = WS.Cells(i, 7).Value
    ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes("park location").TextFrame.TextRange = WS.Cells(i, 9).Value
    ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes("cb").TextFrame.TextRange = Right(WS.Cells(i, 36).Text, 2)
    ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes("cm").TextFrame.TextRange = (CouncilMember(CD))
    ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes("scope").TextFrame.TextRange = WS.Cells(i, 8).Value
    ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes("funding").TextFrame.TextRange = FundingEst(i)
    ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes("status").TextFrame.TextRange = StatusUpdate(i)

Next

End Sub

1 Ответ

0 голосов
/ 03 ноября 2018

Вы проходите не через столбец а, а до 35-го столбца на листе. изменить

CD = WS.Cells(i, 35).Value

до

CD = WS.Cells(i, 1).Value

Кроме того, если в этих ячейках находится не целое число, а текст или что-то еще, вы получите ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...