VBA: For-Loop не должен останавливаться при возникновении ошибки, он должен перейти к следующему блоку - PullRequest
0 голосов
/ 17 мая 2018

Мне нужно изменить цикл for, чтобы он переходил к следующей итерации, когда не находит объект.Вот фрагмент:

For j = 0 To i - 1

  Proj = Cells(3 + j, 2).Value

  ResClass = Cells(3 + j, 3).Value

    Set project = resq.Projects.Item(Proj)
    Set class = project.ReservingClasses(ResClass)

    Set CFP = class.Vectors("Cashflow DFM JM").Method
    Set CFPvol5 = class.Vectors("Cashflow DFM JM vol5").Method
    Set CFPTr = class.Vectors("Cashflow DFM JM Tr").Method

    orig = project.OriginCount 

For k = 1 To orig

            Cells(20 - 3, 4) = "DFM JM"
            Cells(20 - 3, 4).Font.Bold = True
            Cells(20 + k, col) = CFP.CashFlowPeriodLabel(k) - orig
            Cells(20 - 2, col) = Cells(3 + j, 1).Value
            Cells(20 - 2, col).Font.Bold = True
            Cells(20 - 1, col + 1) = CFP.CashFlowPeriodLabel(1)
            Cells(20 + k, col + 1) = Round(CFP.DiscountedCashflows(k, 1), 0)
            Cells(20 - 1, col + 2) = CFP.CashFlowPeriodLabel(2)
            Cells(20 + k, col + 2) = Round(CFP.DiscountedCashflows(k, 2), 0)

            Cells(59 - 3, 4) = "DFM Paid vol5"
            Cells(59 - 3, 4).Font.Bold = True
            Cells(59 + k, col) = CFPvol5.CashFlowPeriodLabel(k) - orig
            Cells(59 - 2, col) = Cells(3 + j, 1).Value
            Cells(59 - 2, col).Font.Bold = True
            Cells(59 - 1, col + 1) = CFPvol5.CashFlowPeriodLabel(1)
            Cells(59 + k, col + 1) = Round(CFPvol5.DiscountedCashflows(k, 1), 0)
            Cells(59 - 1, col + 2) = CFPvol5.CashFlowPeriodLabel(2)
            Cells(59 + k, col + 2) = Round(CFPvol5.DiscountedCashflows(k, 2), 0)

            Cells(98 - 3, 4) = "DFM JM Tr"
            Cells(98 - 3, 4).Font.Bold = True
            Cells(98 + k, col) = CFPTr.CashFlowPeriodLabel(k) - orig
            Cells(98 - 2, col) = Cells(3 + j, 1).Value
            Cells(98 - 2, col).Font.Bold = True
            Cells(98 - 1, col + 1) = CFPTr.CashFlowPeriodLabel(1)
            Cells(98 + k, col + 1) = Round(CFPTr.DiscountedCashflows(k, 1), 0)
            Cells(98 - 1, col + 2) = CFPTr.CashFlowPeriodLabel(2)
            Cells(98 + k, col + 2) = Round(CFPTr.DiscountedCashflows(k, 2), 0)

Next k
    col = col + 4


Next

Если для некоторого j в первом цикле for нет CFPvol5 во втором цикле for, то процедура останавливается с ошибкой.Я хочу, чтобы процедура продолжалась со следующего блока, в данном случае с CFPTr.Это возможно?И если да, то как?

Большое спасибо за помощь!

1 Ответ

0 голосов
/ 17 мая 2018

Показано 2 метода: просто образец.

 on error resume next

         For i = 1 to x
        'do your stuff here

        next

        on error goto 0

или

on error goto nextLoop
for i = 1 to x

' do your stuff here

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