首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

写宏过程中遇到Function函数exit的有关问题;如何让程序 不继续运行exit Function 后面的语句,直接退出功能函数

2014-01-17 
写宏过程中遇到Function函数exit的问题;怎么让程序 不继续运行exit Function 后面的语句,直接退出功能函数

写宏过程中遇到Function函数exit的问题;怎么让程序 不继续运行exit Function 后面的语句,直接退出功能函数?
写宏过程中遇到Function函数exit的问题;怎么让程序 不继续运行exit Function 后面的语句,直接退出功能函数?
-->针对这个问题,我查看了帮助文档,里面就说是会执行后面的语句,如果按照这种节奏的话,函数递归的话,岂不是一直出不去这个函数?有没有办法可以让函数直接退出?不执行后面的语句。
是在execl里面写的宏哦

“Exit Function 语句使执行立即从一个 Function 过程中退出。程序接着从调用该 Function 过程的语句之后的语句执行。”

代码如下:

'模块分类_函数
'函数参数介绍
'dCaseA_M()初始分析数组;
'sReprot() 存储结果数组;
'iStrA_M   需要比较的初始值;
'iNumA_M   当前匹配行数;
'iCountY_M 全部匹配到的用例个数;

Function Module_Class(dCaseA_M(), sReprot_M() As String, iStrA_M As String, iNumA_M As Integer, iCountY_M As Integer)

    Dim iNumA As Integer   '临时计数器
    Dim iNumC As Integer   '临时计数器
    Dim iNumB As Integer   '临时计数器
    Dim iNumD As Integer   '临时计数器
    
    Dim BBB As String
    Dim sStrB As String
    Dim sStrC As String
    
    iNumC = 0
    
    For iNumA = iNumA_M To iCountY_M
    
        '按模块分类的数据类比,将 用例 月份,地市,品牌进行组合
        sStrB = CStr(dCaseA_M(iNumA - 1)(1, 2)) + CStr(dCaseA_M(iNumA - 1)(1, 4)) + CStr(dCaseA_M(iNumA - 1)(1, 5))
        
        If sStrB = iStrA_M Then
        
            '如果是第一次写入,则直接编写,否则需要拿当前的场景编码和已经存储结果数组中场景做比较
            '一致则向右添加 结果,不一致则向下添加场景
            If iNum = 1 Then
            
                '调用写入函数
                BBB = ImprotReprot(dCaseA_M(), sReprot_M(), iNum_1 - 1, iNumA, True)
                
                '记录存入结果数组的行数
                iNum_1 = iNum_1 + 1
            Else
                
                sStrC = dCaseA_M(iNumA - 1)(1, 13) + dCaseA_M(iNumA - 1)(1, 14) + dCaseA_M(iNumA - 1)(1, 15) + dCaseA_M(iNumA - 1)(1, 16) + dCaseA_M(iNumA - 1)(1, 17) + dCaseA_M(iNumA - 1)(1, 18) + dCaseA_M(iNumA - 1)(1, 19) + dCaseA_M(iNumA - 1)(1, 20) + dCaseA_M(iNumA - 1)(1, 21)
                For iNumB = 0 To iNum_1
                    
                    '如果和结果列表中的场景,存在匹配项,则在后面进行叠加,否则向下追加
                    If sReprot_M(iNumB, 12) = sStrC Then
                        
                        '调用写入函数
                        BBB = ImprotReprot(dCaseA_M(), sReprot_M(), iNumB, iNumA, False)
                        
                        Exit For
                    End If
                Next iNumB
                '如果循环完毕后依然匹配不到相同场景,则在结果数组中添加一行
                If iNumB >= iNum_1 Then
                    


                    '调用写入函数
                    BBB = ImprotReprot(dCaseA_M(), sReprot_M(), iNum_1 - 1, iNumA, True)

                    '记录存入结果数组的行数
                    iNum_1 = iNum_1 + 1
                    
                End If
            End If
            
        Else
            
            sStrB = CStr(dCaseA_M(iNumA - 1)(1, 2)) + CStr(dCaseA_M(iNumA - 1)(1, 4)) + CStr(dCaseA_M(iNumA - 1)(1, 5))
            
            '全局判断计数器(判断被第几类模块)
            iNum = iNum + 1
            iNum_2 = iNum_2 + 6
          '嵌套调用模块分类函数
            BBB = Module_Class(dCaseA_M(), sReprot_M(), sStrB, iNumA, iCountY_M)
            
        End If
        
        '全部用例数过滤完毕后函数结束
        If iNumA = iCountY_M Then
            Exit Function
       End If
        
    Next iNumA
    
End Function


[解决办法]
exit Function 不就退出该函数了吗?
Sub test()
    funct 16
End Sub
Function funct(ByVal i As Long) As Long
    Dim k As Long
    For k = 1 To i
        If k > 5 Then Exit Function
        Debug.Print k '''只能输出12345
    Next
End Function

[解决办法]
既然 For iNumA = iNumA_M To iCountY_M

干嘛还要

If iNumA = iCountY_M Then            
    Exit Function       
End If

?

热点排行