首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA -- .formula中的变量

VBA -- .formula中的变量
EN

Stack Overflow用户
提问于 2017-07-26 16:14:21
回答 4查看 119关注 0票数 1

有没有一种更优雅(更简单)的方法将变量放入.formula?我不想使用.formulaR1C1

我有这样的代码:

代码语言:javascript
复制
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)放入那个单元格,这段代码就可以完成这项工作。但我只想确定这是最简单的方法。

EN

回答 4

Stack Overflow用户

发布于 2017-07-26 16:19:07

最简单的方法是跳过所有的选择和那些变量

代码语言:javascript
复制
PosR = Range("C8").End(xlDown).Row
Range("N" & PosR).Formula = "=SUM($N$9:$N$" & PosR - 2 & ")"

编辑:更明确地说,最简单的方法是使用FormulaR1C1,但你说你不想这样做,所以...

票数 3
EN

Stack Overflow用户

发布于 2017-07-26 16:18:08

您可以使用以下代码(不使用SelectActiveCell

代码语言:javascript
复制
PosR = Range("C8").End(xlDown).Row
KonR = PosR - 2

Range("N" & PosR).Formula = "=SUM(" & Range("$N$9").Address & ":" & Range("$N$" & KonR).Address & ")"

,更简单的版本:

代码语言:javascript
复制
Range("N" & PosR).Formula = "=SUM($N$9:$N$" & KonR & ")"
票数 1
EN

Stack Overflow用户

发布于 2017-07-26 16:21:33

那么你应该尝试avoid using Select in VBA。您已经在.Formula中实际包含了一个简单的变量,但整个代码都可以简化:

代码语言:javascript
复制
PosR = Range("C8").End(xlDown).Row
Range("N" & PosR).Formula = "=SUM($N$9:$N$" & PosR - 2 & ")"

实际上,您也应该完全限定您的范围,如下所示

代码语言:javascript
复制
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或简单地使用

代码语言:javascript
复制
' Again, preferably fully qualified
Range("C" & Rows.Count).End(xlUp).Row 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45321109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档