Сообщение об ошибке Next без получения - PullRequest
1 голос
/ 01 ноября 2019

Я написал макрос из родительского файла, чтобы изменить дочерний файл.

В родительском файле 10 + строк, по которым я хочу перейти. Дочерний файл просматривает строку 1 и создает файл на основе имени в строке 1.

Затем я использую функцию For и Next, чтобы заставить дочерний элемент просмотреть следующую строку и сохранить файл на основеновое имя и т. д. и т. д.

Я получаю сообщение об ошибке:

Далее без For

Мой код:

Sub CreateModels()

' set parameters
Dim vDestPath As String
Dim vDestFile As String
Dim vSrcePath As String
Dim vCurrFile As String
Dim vSrceFile As String
Dim vTot As Integer

vSrceFile = "Bridge 3-S Financial Model.xlsx"
vSrcePath = ActiveWorkbook.Path + "\Bridge 3-S Financial Model.xlsx"
vCurrFile = ActiveWorkbook.Name
vDestPath = ActiveWorkbook.Path & "\Output Models\"

'OpenFinancialModel
Workbooks.Open vSrcePath, UpdateLinks:=False
Sheets("Input Sheet Data").Select
Range("A4").Select

'creating models

For vTot = 6 To 1000

    ActiveCell.FormulaR1C1 = "='[Input Sheet.xlsm]Input Sheet'!R" & vTot & "C1"
    If Range("A4").Value <> 0 Then
    Do

    filepath = vDestPath & Range("a4") & ".Xlsx"
    ActiveWorkbook.SaveAs (filepath)
    vTot = vTot + 1

Next

Else
  ActiveWorkbook.Close SaveChanges:=False

End If

End Sub

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Удалите ключевое слово "Do", и вы можете завершить оператор If перед ключевым словом "Next". Как то так:

For vtot = 6 To 1000

    ActiveCell.FormulaR1C1 = "='[Input Sheet.xlsm]Input Sheet'!R" & vtot & "C1"
 If Range("A4").Value <> 0 Then

    filepath = vDestPath & Range("a4") & ".Xlsx"
    ActiveWorkbook.SaveAs (filepath)
    vtot = vtot + 1

 Else
    ActiveWorkbook.Close SaveChanges:=False

 End If

Next
0 голосов
/ 01 ноября 2019

Вам нужно улучшить свои циклы и запросы. Половина запроса If .. Then .. Else находится в пределах For .. Next - не очень хорошая идея. Пожалуйста, проверьте положение Next и переместитесь в другое место для ваших нужд.

И там прервано Do отсутствует некоторый псевдокод, такой как:

Dim k As Long

Do While k <= 10
   Cells(k, 1).Value = k
Loop

Удалить Doи отладить ваш код.

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