【问题标题】:Excel VBA - insert value with relative valuesExcel VBA - 插入具有相对值的值
【发布时间】:2023-03-25 09:06:01
【问题描述】:

感谢专家的帮助!

我正在尝试编写代码:

  1. 我选择一个单元格并执行宏(假设单元格是 L30)
  2. VBA 复制包含活动单元格的整行(复制第 30 行的整个数据(公式和硬编码数字的混合))
  3. VBA 在复制的行下方插入一个新行(因此第 30 行中的数据下移到第 31 行)
  4. VBA 使用公式和复制行(第 30 行)中的硬编码数字粘贴新行(第 31 行)

  5. 在新行的 O 列中,VBA 从单元格“O4”插入数值,但符号相反(O7 有一个数字,但它基于公式)

  6. 在新行的列 P 中,VBA 从单元格“R4”插入数字值,但符号相反(R4 也有数字,但它基于公式)

  7. 在 P30 中,VBA 插入一个公式,其中“=原始 P30 值 - P31”

我已经编写了下面的代码。这似乎完成了 1、2、3、4、5,但仅完成了部分 4 和 5,因为我似乎无法为值 O7 和 R4 加上负号并将它们插入新行。

第 6 步.. 是我什至无法完成的事情......

我知道这是我要求的很多步骤。
一些指导或提示将不胜感激。

谢谢,

ActiveCell.Offset(1, 0).EntireRow.INSERT
ActiveCell.EntireRow.Copy ActiveCell.Offset(1, 0).EntireRow

Range("O4").Copy ActiveCell.Offset(1, 4)
Range("R4").Copy ActiveCell.Offset(1, 5)

【问题讨论】:

  • 我认为展示您想要做什么的最佳方式是提供数据前后的快照。

标签: excel vba


【解决方案1】:

试试这个:

Dim r As Range, nrow As Long, orow As Long
Set r = ActiveCell
nrow = r.Offset(1, 0).Row: orow = r.Row
r.EntireRow.Copy
r.Offset(1, 0).Insert xlDown

Range("O" & nrow) = -Range("O4") 'reverse the sign
Range("P" & nrow) = -Range("P4") 'reverse the sign
With Range("P" & orow)
    .Value = .Value - .Offset(1, 0).Value
End With

对于第 7 步,您不能将其分配为公式,因为那将是循环引用。
上面的代码已经将结果放在 P30 中(基于上面的示例)。 HTH。

【讨论】:

  • L42,非常感谢!!第一部分工作得很好!我正在研究第二部分以更好地理解 (.value = .value - .offset(1,0).Value 背后的逻辑。我想我会在进行更多模拟运行时弄清楚。
  • 对于迟到的回复,我深表歉意。我已经为此苦苦挣扎了一段时间,并且一直在手动完成任务。谢谢!谢谢!
  • @user4037625 很高兴它有帮助。顺便说一句,请参阅accepting answers 作为在 SO 中表达感谢的一种方式。也解释了here。我知道的大部分东西,都是在这里学到的。这是一个很好的社区,只要你发reasonable question,每个人都愿意回答。
  • 船长你知道了。我的 apol 不早点接受答案!再次非常感谢。我也会尽我所能做出贡献。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 2016-07-27
  • 2012-05-31
  • 2015-08-07
  • 1970-01-01
  • 2018-03-02
相关资源
最近更新 更多