Excel VBA – 插入具有相对值的值

将感谢专家的帮助!

我想写一个代码在哪里:

  1. 我select一个单元格并执行macros(比如单元格是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) 

尝试这个:

 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。