【问题标题】:VBA macro to subtract one variable number (dynamic) from a fixed numberVBA宏从固定数中减去一个变量数(动态)
【发布时间】:2020-01-19 00:50:33
【问题描述】:

我正在寻找一个动态宏,它从 B2 开始减去 C2 开始的数字,然后将它们放在 D2 开始。 C2 以后的数字是固定的,尽管用户会在 B2 以后输入数字。 C 列(收费小时数)的长度会根据已导入的工作表而变化。代码如下:

Dim O As Long
O = Cells(Rows.Count, "C").End(xlUp).Row
Cells(O + 1, "C").Formula = "=SUM(C2:C" & O & ")"
Cells(O + 1, "C").Interior.Color = RGB(208, 247, 197)
Cells(O + 1, "C").Font.Bold = True

表格看起来像这样(第一列是 B,最后一列是 D):

Hours Budgeted | Hours Charged | Variance
       0       |     85        |  0
       0       |     31        |  0
       0       |     20        |  0
       0       |     100       |  0
       0       |     75        |  0

总而言之,当用户在预算小时数 (B) 列中输入一个值时,我希望它自动从收费小时数 (C) 列中减去并显示在差异 (D) 列中。 这不能只是一个 '=C2-B2' 的原因是因为我有一个输入所有这些数据的宏,以及一个单独的宏来“重置”工作表(删除所有数据和公式)。

谢谢大家, 杰克。

【问题讨论】:

  • 你的代码有什么问题?您的示例看起来不是很有帮助 - 为什么一切都为零?
  • 显示的代码仅供参考。一旦有人将数据输入第一列,我遇到的问题是在第三列中显示前两列的减法结果。在用户输入数据之前,预算小时数将始终为零。方差列是我需要公式的地方(因此它是 0)。
  • 如果您希望在用户输入数据时发生某些事情,您需要调查工作表事件,在这种情况下可能是更改事件。

标签: excel vba dynamic subtraction


【解决方案1】:

下面的代码应该可以解决问题,只需在您发布的代码之后添加即可。

For i = 2 To O
    Cells(i, "D").FormulaR1C1 = "=RC[-1]-RC[-2]"
Next i

FormulaR1C1 允许您插入与要放入公式的单元格相关的单元格引用,因此 R[2]C[3] 将插入对向下三行和右侧三列的单元格的引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多