在调试过程时,用逐语句运行会就不会崩溃
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
逐语句执行则不会出错