Excel宏变成出现问题,直接运行时容易崩溃,逐语句运行时则不会。

问题遇到的现象和发生背景

在调试过程时,用逐语句运行会就不会崩溃

img

问题相关代码,请勿粘贴截图
Sub NGIExtractDate(nf, FileKey)
'程序类型为 First-4 _ 文件数量_程序文件名

    SheetName1 = "First"
    Name11 = "记录层": Name12 = "工步层": Name21 = "充电特性数值": Name22 = "放电特性数值"
    Dim CD(2) As Integer
    Dim Tdata(1000) As String
    'Dim l As Long
    OrSingleDischarge = Range("L3").Value         '选择是否单选放电数据,“0”为不是,“1”为是
    OrCloseFile = Range("I4").Value               '选择是否在处理完数据后关掉相应文件
    OrCapacity = Range("K3").Value                '选择是否在选择横坐标为容量
                     'PathName = Range("A4").Value                  '提供待处理文件路径
    Need = Range("M3").Value                      '一共有N种倍率数据需要被提取
    Set WB_Extract = Sheets(SheetName1).Range(Cells(4, 4), Cells(Need + 3, 4))         '输入自己的要处理的倍率
    Set Dt_Extract = Range(Cells(4, 5), Cells(Need + 3, 8))                            '输入要处理数据的工步
    
    With Application.FileDialog(msoFileDialogFilePicker)                  '选择多个文件
        .AllowMultiSelect = True                                          '多选择
        .Filters.Clear                                                    '清除文件过滤器
        .Filters.Add "Excel Files", "*.xls;*.xlsx;*.xlw;*.csv"
        .Filters.Add "All Files", "*.*"                                   '设置两个文件过滤器
        .Show                                                             'FileDialog 对象的 Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)。
        For nf = 1 To .SelectedItems.Count
            Tdata(nf) = .SelectedItems(nf)
        Next
        
    End With
    
    For i = 1 To nf                                '选择文件
        'Windows(FileKey).Activate: Filename = Range("B" & i + 3).Value    '提供待处理文件名称
        Windows(FileKey).Activate
        Delimiter_Sub = InStrRev(Tdata(i), "\")
        Filename = Right(Tdata(i), Len(Tdata(i)) - Delimiter_Sub)
        PathName = Left(Tdata(i), Delimiter_Sub - 1)
        Range("B" & i + 3).Value = Filename
        Range("A4").Value = PathName
        Workbooks.Open Filename:=Tdata(i)                                   '打开相应待处理文件
            
        Windows(Filename).Activate
        If OrSingleDischarge = 0 Then
            Sheets.Add After:=ActiveSheet
            Sheets("Sheet1").Select
            Sheets("Sheet1").Name = "充电特性数值"
            Sheets.Add After:=ActiveSheet
            Sheets("Sheet2").Select
            Sheets("Sheet2").Name = "放电特性数值"
        Else
            Sheets.Add After:=ActiveSheet
            Sheets("Sheet1").Select
            Sheets("Sheet1").Name = "放电特性数值"
        End If

        For j = 1 To Need
            '曲线数据
            CD(1) = Dt_Extract(j, 1): CD(2) = Dt_Extract(j, 2): DCIR = Dt_Extract(j, 3): FD = Dt_Extract(j, 4)
            If OrSingleDischarge = 0 Then
                If OrCapacity = 0 Then
                    Call AssistTwoSelVol(Name11, 2, CD, 0): Call AssistPaste(Name21, 1, j + 1)
                Else
                    Call AssistSelVol(Name11, 2, CD(1), 1): Call AssistPaste(Name21, 1, j * 2)
                End If
            End If
            If OrCapacity = 0 Then
                Call AssistSelVol(Name11, 2, FD, 0): Call AssistPaste(Name22, 1, j + 1)
            Else
                Call AssistSelVol(Name11, 2, FD, 1): Call AssistPaste(Name22, 1, j * 2)
            End If
        Next
        
        If OrSingleDischarge = 0 Then
            If OrCapacity = 0 Then
                Sheets(Name21).Activate: Call AssistAlterRow(1, 2, WB_Extract, 1, Need): Call AssistTime(1, 1, 0)
            Else
                Sheets(Name21).Activate
                For j = 1 To Need
                    Cells(1, 1 + j * 2).Select
                    ActiveCell.FormulaR1C1 = WB_Extract(j)
                Next
            End If
        End If
        If OrCapacity = 0 Then
            Sheets(Name22).Activate: Call AssistAlterRow(1, 2, WB_Extract, 1, Need): Call AssistTime(1, 1, 0)
        Else
            Sheets(Name22).Activate
            For j = 1 To Need
                Cells(1, 1 + j * 2).Select
                ActiveCell.FormulaR1C1 = WB_Extract(j)
            Next
        End If
        
        Call AssistClose(Filename, OrCloseFile)
    Next
    
    Windows(FileKey).Activate
    nf = i - 1
    Range("K3").Value = nf
    
End Sub

运行结果及报错内容

逐语句执行则不会出错

我的解答思路和尝试过的方法
我想要达到的结果