Sub NextSeven_CodeFrame() '应用程序设置 Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual '错误处理 On Error GoTo ErrHandler '计时器 Dim StartTime, UsedTime StartTime = VBA.Timer Dim msg msg = MsgBox("本次执行将会预先清除合并计算的区域,重要文件请做好备份,并且请您确认当前表就是您要汇总的总表!是否继续执行?按是继续执行!按否退出执行!", vbYesNo, "NS Excel工作室") If msg = vbNo Then Exit Sub Dim ShtName Dim ShtIndex Dim RngAddress msg = MsgBox("是否指定分表的名称?按是则输入分表名称,按否则输入分表的序号!", vbYesNo, "NS Excel工作室") If msg = vbYes Then ShtName = Application.InputBox("请输入分表名称:", "NS Excel工作室", , , , , , 2) Else ShtIndex = Application.InputBox("请输入分表序号:", "NS Excel工作室", , , , , , 1) End If RngAddress = "B6:AU12" t = VBA.Timer Dim FileCount& Dim wb As Workbook, OpenWb As Workbook Dim sht As Worksheet, OneSht As Worksheet Dim Rng As Range, OneRng As Range Dim arr() As Double, NewArr As Variant Dim FolderPath$, FileName$ Dim oneCell As Range Set wb = Application.ThisWorkbook Set sht = wb.ActiveSheet Set Rng = sht.Range(RngAddress) Rng.Cells.ClearContents RowCount = Rng.Rows.Count columnCount = Rng.Columns.Count FolderPath = wb.Path & "子文件夹" FileCount = 0 FileName = Dir(FolderPath & "*.xls*") Do While FileName <> "" FileCount = FileCount + 1 Set OpenWb = Application.Workbooks.Open(FolderPath & FileName) If ShtName <> "" Then Set OneSht = OpenWb.Worksheets(ShtName) Else Set OneSht = OpenWb.Worksheets(CLng(ShtIndex)) End If Debug.Print OneSht.Name Set OneRng = OneSht.Range(RngAddress) For Each oneCell In OneRng.Cells If Len(oneCell.Value) > 0 Then If IsNumeric(oneCell.Value) = False Then MsgBox "文件名:" & FileName & " 单元格: " & oneCell.Address & " 的内容不是数字,不能相加,请规范后再次执行求和!" & "——NextSeven竭诚为您服务。" & vbCrLf & "更多服务需求请咨询:QQ84857038 淘宝店号9157940 店铺OfficeVBA自动化", vbOKOnly + vbCritical, "NextSeven提示您" Exit Sub End If End If Next oneCell OneRng.Copy Rng.Cells(1, 1).PasteSpecial xlPasteValues, xlAdd, True, False OpenWb.Close False FileName = Dir Loop '运行耗时 UsedTime = VBA.Timer - StartTime MsgBox "本次运行耗时:" & Format(UsedTime, "0.0000000秒") ErrorExit: '错误处理结束,开始环境清理 Set wb = Nothing Set sht = Nothing Set Rng = Nothing Application.ScreenUpdating = True Application.DisplayAlerts = True Application.Calculation = xlCalculationAutomatic Exit Sub ErrHandler: If Err.Number <> 0 Then MsgBox Err.Description & "!", vbCritical, "错误提示!" 'Debug.Print Err.Description Err.Clear Resume ErrorExit End If End Sub