【发布时间】:2016-06-24 22:54:51
【问题描述】:
我正在尝试在 vba 中编写移动平均线,但下面的代码到处都返回相同的值。
Function trial1(a As Integer) As Variant
Application.Volatile
Dim rng As Range
Set rng = Range(Cells(ActiveCell.Row, 2), Cells(ActiveCell.Row - a + 1, 2))
trial1 = (Application.Sum(rng)) * (1 / a)
End Function
【问题讨论】:
-
那么这里的问题是什么?
-
我的代码似乎不起作用。它为所有单元格返回相同的值。如果我删除 application.volatile 行,我必须手动按 F2 并输入每个单元格以获得正确答案。我认为原因是该函数无法识别动态范围的变化,但不知道如何修复它。
-
我对它进行了测试,它并没有在任何地方返回相同的值,它似乎做了它应该做的事情。您的问题是我们不确切知道您想要什么,我们应该参考您的代码以了解您在做什么。但你的代码可能是错误的。
-
据我所见:1. 你选择一个单元格,触发调用函数 Trial1 的宏并传递一个整数值,第一个问题:这个值是如何固定的?您是对其进行硬编码还是从另一个单元格或用户输入中获取它? 2. 在函数中,您创建一个固定在列 B 上的单元格范围,范围的底部是所选单元格所在的行,顶部是range 是选定单元格的行减去传递给您的函数的整数值加 1。这一切都正确吗?
标签: vba excel with-statement udf