当我试图将公式从一个单元格复制到一个新插入的单元格中时,我遇到了一个问题。
这是我的VBA代码:
Rows(RowValue).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Cells(RowValue, 10).Resize(2, 1).Formula = Cells(RowValue + 1, 10).Formula让我们说,单元格I7过去有以下代码:
=IFERROR(IF(A7="","",INDEX(Table_TipData14[NC_STATUS],MATCH('Rack Report'!A7,Table_TipData14[SN],0))),"")但是,在我的VBA代码第一行之后,该单元将变成I8,其中的代码将自动更改为:
=IFERROR(IF(A8="","",INDEX(Table_TipData14[NC_STATUS],MATCH('Rack Report'!A8,Table_TipData14[SN],0))),"")这很好,这就是我想在这行VBA代码之后发生的事情。
问题是,当第二行VBA代码运行时。它使细胞I7细胞I8应该是什么,使细胞I8细胞I9应该是什么。
任何帮助都将不胜感激!
发布于 2019-02-09 23:49:47
从下面或上面复制公式
您的代码做的正是它应该做的,但不是您想要的。
简化的当前代码示例
对于rowvalue = 7
单元格J6包含=A6
单元格J7包含=A7
单元格J8包含=A8
插入行时,单元格J6保持不变,单元格J7为空,前一个单元格J7在(J8)下面移动一行,并包含=A8和前一个单元格J8,将一行移动到(J9)下面,并包含=A9。
现在应用.Resize(2)时,范围将是J7:J8 (插入空单元格和以前的J7单元格,现在是J8单元格)。现在,您使用J8的公式,即=A8,并将其写入J7,它将保持为=A8,下一行中的公式(J8)将变为=A9,这不是您想要的。
解决方案1
您可以从下面的行中Copy 单元格,这将复制公式。
Sub CopyCell1()
Const rowvalue As Long = 7
Rows(rowvalue).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Cells(rowvalue + 1, 10).Copy Destination:=Cells(rowvalue, 10)
' Or simply:
'Cells(rowvalue + 1, 10).Copy Cells(rowvalue, 10)
End Sub解决方案2
如果坚持使用Resize,,则必须向前一个单元格(上面的单元格)添加一个Offset,然后“应用”Resize,并从上面的单元格(例如,=A6)开始,从上面的单元格(例如,J6)写入公式。
Sub CopyCell2()
Const rowvalue As Long = 7
Rows(rowvalue).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Cells(rowvalue, 10).Offset(-1).Resize(2).Formula _
= Cells(rowvalue - 1, 10).Formula
End Subhttps://stackoverflow.com/questions/54611716
复制相似问题