If statement 在If语句期间调用另一个子节点

If statement 在If语句期间调用另一个子节点,if-statement,call,block,If Statement,Call,Block,我有一个if语句,一旦满足标准,它将调用另一个子系统 “如果isempty=true,则调用子FTE\u合并” 所有这些都很好。。。但是,一旦FTE_合并子项结束,宏将继续返回到第一个子项,并继续执行一系列if语句。我不希望宏在我调用第二个Sub后再次访问“Sub Emp_BY_PayPeriod” 我曾尝试在“次全职员工慰问”结束时终止If 仍然为我提供了“End If WITH Block If” 按付款期划分的子环境管理计划() Dim Mws作为工作表 设置Mws=工作簿(“主加载文件.

我有一个if语句,一旦满足标准,它将调用另一个子系统 “如果isempty=true,则调用子FTE\u合并”

所有这些都很好。。。但是,一旦FTE_合并子项结束,宏将继续返回到第一个子项,并继续执行一系列if语句。我不希望宏在我调用第二个Sub后再次访问“Sub Emp_BY_PayPeriod”

我曾尝试在“次全职员工慰问”结束时终止If 仍然为我提供了“End If WITH Block If”

按付款期划分的子环境管理计划()
Dim Mws作为工作表
设置Mws=工作簿(“主加载文件.xlsm”)。工作表(“表1”)
Mws.Range(“J:J”)。高级筛选器操作:=xlFilterCopy,CopyToRange:=Range(“L1”),Unique:=True
如果IsEmpty(Range(“L2”))=True,则调用FTE_合并
Mws.Range(“J1”)。自动筛选字段:=10,标准1:=ActiveSheet.Range(“L2”)。值
Mws.范围(“A1”).CurrentRegion.Copy
工作簿.Add.ActiveSheet.Range(“A1”).Paste特殊粘贴:=XLPaste ColumnWidths
范围(“A1”)。粘贴特殊粘贴:=xlPasteAll
ActiveSheet.Range(“A1”)。选择
ActiveWorkbook.SaveAs“C:\Users\jmcgoldrick\Desktop\VBA加载文件\Consolidated Files\IncPYRep_u(输入名称1)\u加载(输入付款期).xlsx”,文件格式:=51
活动工作簿。关闭
“下一个支付期”
如果IsEmpty(范围(“L3”))=True,则调用FTE_合并
Mws.范围(“J1”)。自动筛选字段:=10,标准1:=ActiveSheet.范围(“L3”)。值
Mws.范围(“A1”).CurrentRegion.Copy
工作簿.Add.ActiveSheet.Range(“A1”).Paste特殊粘贴:=XLPaste ColumnWidths
范围(“A1”)。粘贴特殊粘贴:=xlPasteAll
ActiveSheet.Range(“A1”)。选择
ActiveWorkbook.SaveAs“C:\Users\jmcgoldrick\Desktop\VBA加载文件\Consolidated Files\IncPYRep_u(输入名称2)\u加载(输入付款期).xlsx”,文件格式:=51
活动工作簿。关闭
“下一个支付期”
如果IsEmpty(Range(“L4”))=True,则调用FTE_合并
Mws.范围(“J1”)。自动筛选字段:=10,标准1:=ActiveSheet.范围(“L4”)。值
Mws.范围(“A1”).CurrentRegion.Copy
工作簿.Add.ActiveSheet.Range(“A1”).Paste特殊粘贴:=XLPaste ColumnWidths
范围(“A1”)。粘贴特殊粘贴:=xlPasteAll
ActiveSheet.Range(“A1”)。选择
ActiveWorkbook.SaveAs“C:\Users\jmcgoldrick\Desktop\VBA加载文件\Consolidated Files\IncPYRep_u(输入名称3)\u加载(输入付款期).xlsx”,文件格式:=51
活动工作簿。关闭
端接头
全职员工助理(合并)
Dim Mws作为工作表
设置Mws=工作簿(“主加载文件.xlsm”)。工作表(“表1”)
Mws.AutoFilter.ShowAllData
Mws.范围(“L1”).当前区域.Clear
Mws.范围(“L1”).CurrentRegion.ClearFormats
“分组合并、摘要和新工作簿副总裁”
“FTE整合”
Mws.范围(“I1”)。自动筛选字段:=9,标准1:=“FTE”
Mws.UsedRange.Offset(1,0)。特殊单元格(xlCellTypeVisible)。EntireRow.Delete
Mws.AutoFilter.ShowAllData
Mws.UsedRange.Copy
工作簿.Add.ActiveSheet.Range(“A1”).Paste特殊粘贴:=XLPaste ColumnWidths
范围(“A1”)。粘贴特殊粘贴:=xlPasteAll
ActiveSheet.Name=“合并”
ActiveWorkbook.SaveAs“C:\Users\jmcgoldrick\Desktop\VBA加载文件\Consolidated Files\FTE Consolidated Payroll Report(输入\日期).xlsx”,文件格式:=51
将FTEW设置为工作表
设置FTEws=工作簿(“FTE合并工资单报告(输入\日期).xlsx”)。工作表(“合并”)
工作表(“合并”)。激活
ActiveSheet.Range(“A1”)。选择
活动工作簿。保存
活动工作簿。关闭
Mws.UsedRange.Offset(1,0)。特殊单元格(xlCellTypeVisible)。EntireRow.Delete
MsgBox“加载文件已成功保存!”
Application.ScreenUpdating=True
端接头

欢迎来到SO!你要结束你的if陈述吗?如果不是,则一旦该语句运行到sub并返回,它将继续工作。如果是排除,请不要使用
If。。。如果。。。如果…
,如果。。。如果。。。其他…其他…。如果不是,至少,
如果。。。如果。。。If…End If…
我添加了elsif和End If(以关闭语句),并且我不再接收块If erorr,但是它仍然返回到原始子运行脚本的其余部分(另一个If语句)。我希望它结束我所有的If场景,否则我将在子FTE合并和原始子FTE之间来回循环。请注意,我有3条If语句。如果第二条If语句调用子FTE合并。。。它仍将返回原始Sub并完成第三条if语句的运行。因此,您的条件是
如果Cond1,那么Do1
如果Cond2,那么Do2
如果Cond3,那么Do3
。如果是,则结束。如果不是,那么elseIf如果不是,那么解释您的算法ideaIf cond1,然后执行此操作,如果不是cond1,那么调用sub-FTE。如果是cond2,则执行此操作,如果不是,则调用子FTE。。。。。等等。问题在于,如果在任何时候调用sub-FTE,它将运行代码,然后返回到if cond3,然后执行此操作,如果不是cond3,则调用sub-FTE。
Sub Emp_By_PayPeriod()

Dim Mws As Worksheet
Set Mws = Workbooks("Master_Load_File.xlsm").Worksheets("Sheet1")    

 Mws.Range("J:J").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("L1"), Unique:=True

If IsEmpty(Range("L2")) = True Then Call FTE_Consolidation

    Mws.Range("J1").AutoFilter Field:=10, Criteria1:=ActiveSheet.Range("L2").Value

    Mws.Range("A1").CurrentRegion.Copy
        Workbooks.Add.ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
                                  Range("A1").PasteSpecial Paste:=xlPasteAll
                      ActiveSheet.Range("A1").Select

    ActiveWorkbook.SaveAs "C:\Users\jmcgoldrick\Desktop\VBA Load FIle\Consolidated Files\IncPYRep_(Enter         Name1)_Load_(Enter Pay Period).xlsx", FileFormat:=51
ActiveWorkbook.Close


'Next Pay Period'
If IsEmpty(Range("L3")) = True Then Call FTE_Consolidation

    Mws.Range("J1").AutoFilter Field:=10, Criteria1:=ActiveSheet.Range("L3").Value

    Mws.Range("A1").CurrentRegion.Copy
        Workbooks.Add.ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
                                  Range("A1").PasteSpecial Paste:=xlPasteAll
                      ActiveSheet.Range("A1").Select

   ActiveWorkbook.SaveAs "C:\Users\jmcgoldrick\Desktop\VBA Load FIle\Consolidated Files\IncPYRep_(Enter Name2)_Load_(Enter Pay Period).xlsx", FileFormat:=51
   ActiveWorkbook.Close


'Next Pay Period'
 If IsEmpty(Range("L4")) = True Then Call FTE_Consolidation

    Mws.Range("J1").AutoFilter Field:=10, Criteria1:=ActiveSheet.Range("L4").Value

    Mws.Range("A1").CurrentRegion.Copy
        Workbooks.Add.ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
                                  Range("A1").PasteSpecial Paste:=xlPasteAll
                      ActiveSheet.Range("A1").Select

 ActiveWorkbook.SaveAs "C:\Users\jmcgoldrick\Desktop\VBA Load FIle\Consolidated Files\IncPYRep_(Enter Name3)_Load_(Enter Pay Period).xlsx", FileFormat:=51
ActiveWorkbook.Close

 End Sub


 Sub FTE_Consolidation()

Dim Mws As Worksheet
Set Mws = Workbooks("Master_Load_File.xlsm").Worksheets("Sheet1")

Mws.AutoFilter.ShowAllData

    Mws.Range("L1").CurrentRegion.Clear
    Mws.Range("L1").CurrentRegion.ClearFormats


'Breakout Consolidation, Summary, and VP to New Workbook'

'FTE Consolidation'
 Mws.Range("I1").AutoFilter Field:=9, Criteria1:="<>FTE"
 Mws.UsedRange.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
     Mws.AutoFilter.ShowAllData
     Mws.UsedRange.Copy

 Workbooks.Add.ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
                           Range("A1").PasteSpecial Paste:=xlPasteAll
               ActiveSheet.Name = "Consolidation"

ActiveWorkbook.SaveAs "C:\Users\jmcgoldrick\Desktop\VBA Load FIle\Consolidated Files\FTE Consolidated     Payroll Report (Enter_Date).xlsx", FileFormat:=51

Dim FTEws As Worksheet
Set FTEws = Workbooks("FTE Consolidated Payroll Report (Enter_Date).xlsx").Worksheets("Consolidation")

Worksheets("Consolidation").Activate
ActiveSheet.Range("A1").Select

ActiveWorkbook.Save
ActiveWorkbook.Close

Mws.UsedRange.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
MsgBox "Load Files Have Been Saved Successfully!"

Application.ScreenUpdating = True

End Sub