【问题标题】:Macro to calculate cash balance in Excel table在 Excel 表中计算现金余额的宏
【发布时间】:2021-10-17 14:11:02
【问题描述】:

我有一个 Excel 表格,其中包含交易(金额输入和金额输出)。我需要一个宏来计算期末余额。你能指导我吗?

这个宏我试过了,但是报错

Private Sub cmdAdd_Click()
     Dim oNewRow As ListRow, rng As Range
     Set rng = Sheets("Bank Sheet").Range("Table2")
     Set oNewRow = Sheets("BankSheet").Range("Table2").ListObject.ListRows.Add(AlwaysInsert:=True)
        With rng
        oNewRow.Range.Cells(1, 5) = TxtBoxBkAmount.Value
        oNewRow.Range.Cells(1, 6) = TxtBoxBkAmount.Value
'Calculate the Balance
      If oNewRow.Row = 11 Then
          oNewRow.Range.Cells(1, 7).FormulaR1C1 = "=R[-3]C+([@[Amount In]]-[@[Amount Out]])"
      Else
          oNewRow.Range.Cells(1, 7).FormulaR1C1 = "=R[-3]C+([@[Amount In]]-[@[Amount Out]])"
      End IfEnd With
End Sub

我正在使用这个宏来删除表中的行: 暗淡 ws 作为工作表,表格作为 ListObject 设置 ws = Sheets("银行表") 设置表 = ws.ListObjects("Table2") 如果 Table.ListRows.Count > 2 那么 表.DataBodyRange.Delete 结束如果

【问题讨论】:

  • 你得到了什么错误,在哪一行?
  • 为什么需要宏?单元格 G11 "=G88+E11-F11。然后 G12 "=G11+E12-F12" 等等。
  • 我得到的错误是:运行时错误'438'(对象不支持此属性或方法)。我想使用宏而不是工作表的公式,因为表格将被清除和重用。当使用宏清除数据范围时,公式也被删除!同样在清除数据范围并进入新事务后,它会跳转到Table2的第1行。

标签: excel vba


【解决方案1】:

最简单的方法是使用如下公式:

对于单元格

  • G11 =G8+E11-F11.
  • G12及以下=G11+E12-F12

但我假设您的问题是表中列的默认 Calculated formula

要解决这个问题,您可以添加一个 IF 语句来检查行是否是表中的第一行,并相应地更改公式,如下所示:

= IF (G10="Balance", G8+([@[Amount In]]-[@[Amount Out]]), G11+([@[Amount In]]-[@[Amount Out]]))

在单元格 G11 中添加此公式并用此公式覆盖列中的所有单元格

【讨论】:

  • This = IF (G10="Balance", G8+([@[Amount In]]-[@[Amount Out]]), G11+([@[Amount In]]-[@[金额]])) 效果很好。问题是当您使用宏清除数据范围时,它也会清除公式。我使用用户表单来填充表格(工作表)。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 1970-01-01
相关资源
最近更新 更多