下一步错误消息,而不是收到

时间:2019-11-01 14:02:39

标签: excel vba

我已经从父文件中编写了一个宏来更改子文件。

父文件有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 个答案:

答案 0 :(得分:1)

删除“ Do”关键字,您可能希望在“ Next”关键字之前结束If语句。像这样:

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

答案 1 :(得分:0)

您需要改善循环和查询。查询If .. Then .. Else的一半在For .. Next之内-这不是一个好主意。请检查Next的位置,然后根据需要移动到另一个地方。

还有一个Do异常终止,缺少一些伪代码,例如:

Dim k As Long

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

删除Do并调试代码。