You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA复制当前工作簿指定列到新工作簿并计算消费总额报错处理

报错原因

原代码存在多个直接触发运行时错误的问题:

  • 拼写错误:workshets 属于拼写失误,正确写法是Worksheets,会导致源工作表对象赋值失败
  • 对象赋值逻辑完全错误:Set nws = nwb.Worksheets("Sheet1").Range("B2").Value = nws.Range("B2").Value 这行既没有正确给nws工作表对象赋值,还在nws未初始化的状态下调用其属性,直接抛出Object variable or With block variable not set错误
  • 冗余逻辑问题:全表复制后再调用Copy/PasteSpecial转值的写法效率极低,且未指定粘贴目标,容易出现异常
  • 未实现消费金额统计的相关逻辑
可直接运行的修正代码
Sub CopyDataToNewWB()
    Dim wb As Workbook, ws As Worksheet
    Dim nwb As Workbook, nws As Worksheet
    Dim lastRow As Long, amountCol As Long
    Dim totalAmount As Double

    ' 绑定源工作簿与工作表,若源表名不是Sheet1请自行修改
    Set wb = ThisWorkbook
    Set ws = wb.Worksheets("Sheet1")

    ' 复制工作表生成新工作簿
    ws.Copy
    Set nwb = ActiveWorkbook
    Set nws = nwb.ActiveSheet

    ' 一次性将所有单元格转为纯值,断开公式关联
    With nws.UsedRange
        .Value = .Value
    End With

    ' 按表头匹配消费金额列,适配列位置变动
    On Error Resume Next
    amountCol = nws.Rows(1).Find("消费金额", xlValues, xlWhole).Column
    On Error GoTo 0
    If amountCol = 0 Then
        MsgBox "表头未找到「消费金额」字段,请检查后重试", vbExclamation
        nwb.Close False
        Exit Sub
    End If

    ' 统计消费金额总和
    lastRow = nws.Cells(nws.Rows.Count, amountCol).End(xlUp).Row
    totalAmount = WorksheetFunction.Sum(nws.Range(nws.Cells(2, amountCol), nws.Cells(lastRow, amountCol)))

    ' 写入统计结果
    With nws.Cells(lastRow + 1, amountCol)
        .Value = totalAmount
        .Font.Bold = True
        .Offset(0, -1) = "消费总金额:"
        .Offset(0, -1).Font.Bold = True
    End With

    ' 自动调整列宽适配内容
    nws.UsedRange.EntireColumn.AutoFit
    MsgBox "操作完成,消费总金额为:" & Format(totalAmount, "#,##0.00"), vbInformation
End Sub
使用说明
  • 运行前确认源数据的工作表名称为Sheet1,如果名称不同请修改代码中对应位置的表名
  • 代码会自动保留源表所有字段(包含姓名、年龄、消费金额、日期),不需要手动指定列
  • 复制到新工作簿的内容全部为纯值,不会因为原工作簿路径变动出现引用错误
  • 统计结果会自动写在消费金额列的最后一行数据下方,自动加粗标识,运行完成后会弹窗提示总金额
  • 如果表头不存在「消费金额」字段,代码会弹出提示并自动关闭未保存的新工作簿,不会抛出运行时错误

内容的提问来源于stack exchange,提问作者Ali C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:06:07