【发布时间】:2016-06-23 02:12:22
【问题描述】:
背景故事:我正在从 PBX 服务器上提取电话记录。我正在调整和计算长途电话。我已经过滤掉了本地和免费电话号码。我按租户姓名将工作簿拆分为工作表。我下面的宏是格式化和计算该通话的持续时间和总费用的所有总和。
问题:我的宏没有正确选择所有电话行(我相信)。它能够正确计算第一张表(我选择了所有电话行),但是当它移动到其他表时,它无法正确地将它们全部相加。
准确的错误表:
Start Time Duration Calling Name Dialed Number Cost
6/1/2016 15:07 0:30:55 BLANK_I380 NUMBER $3.72
6/3/2016 12:26 0:05:40 BLANK_I380 NUMBER $0.72
6/6/2016 13:49 0:00:08 BLANK_I380 NUMBER $0.12
6/6/2016 13:50 0:00:08 BLANK_I380 NUMBER $0.12
6/6/2016 13:51 0:01:15 BLANK_I380 NUMBER $0.12
6/16/2016 8:29 0:01:42 BLANK_I380 NUMBER $0.24
Total Duration: 0:02:50 Total Cost: $0.72
第一个正确的表格
Start Time Duration Calling Name Dialed Number Cost
6/1/2016 9:20 0:00:09 BLANK Shining_I113 1313600000 $0.12
6/1/2016 9:25 0:00:22 BLANK Shining_I113 1248600000 $0.12
6/1/2016 9:26 0:00:54 BLANK Shining_I113 1248600000 $0.12
Total Duration: 0:01:25 Total Cost: $0.36
代码
Sub FormatEntry()
Dim TotalCost As Double
Dim TotalTime As Double
For Each ws In ActiveWorkbook.Worksheets
On Error Resume Next 'Will continue if an error results
ws.Range("E:E").NumberFormat = "_-[$$-40B]* #,##0.00_ ;_-[$$-40B]* -#,##0.00 ;_-[$$-40B]* ""-""??_ ;_-@_ "
ws.Range("A1").End(xlDown).Offset(1).Font.Bold = True
ws.Range("A1").End(xlDown).Offset(1).Value = "Total Duration:"
ws.Range("D1").End(xlDown).Offset(1).Font.Bold = True
ws.Range("D1").End(xlDown).Offset(1).Value = "Total Cost:"
ws.Range("E2").End(xlDown).Offset(1, 0).Value = _
WorksheetFunction.Sum(Range("E2:E" & Cells.SpecialCells(xlLastCell).Row))
ws.Range("B2").End(xlDown).Offset(1, 0).Value = _
Format(WorksheetFunction.Sum(Range("B2:B" & Cells.SpecialCells(xlLastCell).Row)), "hh:mm:ss")
Next ws
结束子
【问题讨论】:
-
取出
On Error,它会抛出什么错误?任何?还是它运行了,只是不准确?