【发布时间】:2020-08-21 03:59:30
【问题描述】:
我在 VBA 中创建了一个自定义函数,其输入是一个单元格值和三个相同长度的不同范围。代码或多或少如下:
Public Function MYTEST(CELLVALUE As Double, ByRef INPRNG As Range, ByRef RNG1 As Range, ByRef RNG2 As Range)
Dim i As Double
DIM A As Double
DIM B As Double
Dim MODRNG As Range
For i = LBound(INPRNG) To UBound(INPRNG)
MODRNG(i) = INPRNG(i) * RNG1(i) + CELLVALUE * RNG2(i)
Next i
A= MODRNG.Cells(1,1)
B= MODRNG.Cells(2,1)
mytest =A+B
End Function
我得到一个#VALUE!运行此代码时出错。 我的问题是三个方面:
- 是我的变量/范围声明不正确还是 For 循环导致了问题?
- 有没有办法使用 For Each 循环而不是 For Next?
- 我可以在我的 Excel 工作表中执行(for 循环的)数组操作并将修改后的数组发送到函数吗?
谢谢!
【问题讨论】:
-
你能举一个你输入数据的例子吗?如果您使用数学运算符(我假设它会返回一个数字),
MODRNG不应该是一个范围。 -
所以数据看起来像: "A1:A4"={1,2,3,4} "B1:B4"={0,1,1,1} "C9"= 2 "D1:D4" = {1,0,0,0}。 For 循环运行后,最终结果应该是数组 MODRNG = {2,2,3,4}。我希望这是有道理的。
-
您是要在一个单元格中输入此公式并更改 4 个单元格吗?
-
不,函数的最终输出将是“A+B”,其中 A 和 B 的值将从数组 MODRNG 的特定值中分配。 MODRNG 的值是根据发送到函数的输入计算得出的。
-
如果您在问题中添加显示特定输入和预期结果的屏幕截图会有所帮助。
标签: arrays excel vba function for-loop