有没有一种更优雅(更简单)的方法将变量放入.formula?我不想使用.formulaR1C1
我有这样的代码:
Range("C8").Select
Selection.End(xlDown).Select
PosR = ActiveCell.Row
KonR = PosR - 2
Range("N" & PosR).Select
aAddress = Range("$N$9").Address & ":" & Range("$N$" & KonR).Address
ActiveCell.Formula = "=SUM(" & aAddress & ")"显然,我想把=SUM($N$9:$N$101) (101是最后一个单元格减去2)放入那个单元格,这段代码就可以完成这项工作。但我只想确定这是最简单的方法。
发布于 2017-07-26 16:19:07
最简单的方法是跳过所有的选择和那些变量
PosR = Range("C8").End(xlDown).Row
Range("N" & PosR).Formula = "=SUM($N$9:$N$" & PosR - 2 & ")"编辑:更明确地说,最简单的方法是使用FormulaR1C1,但你说你不想这样做,所以...
发布于 2017-07-26 16:18:08
您可以使用以下代码(不使用Select和ActiveCell
PosR = Range("C8").End(xlDown).Row
KonR = PosR - 2
Range("N" & PosR).Formula = "=SUM(" & Range("$N$9").Address & ":" & Range("$N$" & KonR).Address & ")"或,更简单的版本:
Range("N" & PosR).Formula = "=SUM($N$9:$N$" & KonR & ")"发布于 2017-07-26 16:21:33
那么你应该尝试avoid using Select in VBA。您已经在.Formula中实际包含了一个简单的变量,但整个代码都可以简化:
PosR = Range("C8").End(xlDown).Row
Range("N" & PosR).Formula = "=SUM($N$9:$N$" & PosR - 2 & ")"实际上,您也应该完全限定您的范围,如下所示
With ThisWorkbook.Sheets("Sheet1")
PosR = .Range("C8").End(xlDown).Row
.Range("N" & PosR).Formula = "=SUM($N$9:$N$" & PosR - 2 & ")"
End With如果C列中有空单元格,那么使用xlDown将无法找到最后一个单元格。您可能希望查看ways of finding the last cell in VBA或简单地使用
' Again, preferably fully qualified
Range("C" & Rows.Count).End(xlUp).Row https://stackoverflow.com/questions/45321109
复制相似问题