Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 我在使用调用函数时遇到问题_Vba - Fatal编程技术网

Vba 我在使用调用函数时遇到问题

Vba 我在使用调用函数时遇到问题,vba,Vba,我看过很多关于调用另一个sub的视频。但是每次它到达应该调用函数的行时,我都会使用我的代码。它只是完成了IF语句,而没有执行此命令。请注意,此代码来自userforum中的commandbutton Sub Begin_Click() Unload BeginTheCode Dim ws As Worksheet Dim strDataRange As Range Dim keyRange As Range Dim wbk As Workbook Dim wbkName As String

我看过很多关于调用另一个sub的视频。但是每次它到达应该调用函数的行时,我都会使用我的代码。它只是完成了IF语句,而没有执行此命令。请注意,此代码来自userforum中的commandbutton

Sub Begin_Click()

Unload BeginTheCode

Dim ws As Worksheet
Dim strDataRange As Range
Dim keyRange As Range
Dim wbk As Workbook
Dim wbkName As String
Dim wsName As String
Dim mName As String
Dim yName As String
Dim cName As String

On Error GoTo Err

'This command puts the other code in this workbook on hold'
Application.DisplayAlerts = False

'This provides shortcuts for future use in the code'
    Set wa = ThisWorkbook.Worksheets("RE-I-A Raw")
    Set wb = ThisWorkbook.Worksheets("I-A Data Copy (1)")
    Set wc = ThisWorkbook.Worksheets("Untied Raw")
    Set wd = ThisWorkbook.Worksheets("Blanks")

Dim IMRCCSpec() As String
Dim IMRSup() As String
Dim x As Integer
Dim y As Integer
Dim i As Integer

If Comittee = "IMRCC" Then
    Call IM
    Else
    If Comittee = "COO" Then
        Call COO
        Else
        If Comittee = "CFO" Then
            Call CFO
            Else
            If Comittee = "AURA" Then
                Call AURA
                Else
                If Comittee = "Distribution" Then
                    Call Dist
                    Else
                    If Comittee = "Legal" Then
                        Call Legal
                    End If
                End If
            End If
        End If
    End If
End If

Exit Sub
Err:
MsgBox "Error on Line : Sub Begin_Click() " & Erl

End Sub


没有出现错误消息。当我使用F8命令时,它会毫无错误地通过这一行,并且不会执行任何操作

您不需要使用单词
Call
来调用子例程,因此您可以将其取出。另外,当您单步查看时,
committee
的值是多少?此外,您应该在任何例程(在模块顶部)之前添加
Option Explicit
,并确保声明了所有变量。此外,请研究使用
Select Case
而不是嵌套的
If
语句。它会更干净。子系统(IM、CDO、CFO等)之间的差异在哪里?似乎您可以创建一个子项并将Committee作为参数传递。除了上面的注释外,似乎
Begin\u Click
包含许多在模块中从未使用过的声明和变量设置。把它扔掉。这只会让人困惑。(如果您出于发布目的删除了模块中的一些代码,则忽略此注释)。您不需要使用
Call
来调用子例程,因此您可以将其删除。另外,当您单步查看时,
committee
的值是多少?此外,您应该在任何例程(在模块顶部)之前添加
Option Explicit
,并确保声明了所有变量。此外,请研究使用
Select Case
而不是嵌套的
If
语句。它会更干净。子系统(IM、CDO、CFO等)之间的差异在哪里?似乎您可以创建一个子项并将Committee作为参数传递。除了上面的注释外,似乎
Begin\u Click
包含许多在模块中从未使用过的声明和变量设置。把它扔掉。这只会让人困惑。(如果出于发布目的删除了模块中的部分代码,则忽略此注释)。
Sub IM()

   On Error GoTo Err
   Dim IMRCCSpec() As String
   Dim IMRSup() As String
   Dim x As Integer
   Dim y As Integer
   x = Application.WorksheetFunction.CountA(wt.Range("C:C")) - 2
   y = Application.WorksheetFunction.CountA(wt.Range("E:E")) - 2
   ReDim IMRCCSpec(x) As String
   ReDim IMRCCSup(y) As String
   Dim i As Integer

   For i = 0 To x
       IMRCCSpec(i) = wt.Range("A" & i + 2)
   Next i
   For i = 0 To y
       IMRCCSup(i) = wt.Range("B" & i + 2)
   Next i

   'Call Something

Exit Sub

Err:
MsgBox "Error on Line : Sub IM()" & Erl

End Sub