使用VBA的Excel中的范围

我想创build一个函数MyRange如下:

input:三个数字a,b,d
输出:从a到b的步长为d的数组数组。

例如,如果A1包含1,并且B1包含5,并且在单元格C1中input= MyRange(A1,B1,1)(并且您键入Ctrl + Shift + Enter),则会得到:

A | B | C | D | E | F | G ------------------------- 1 | 5 | 1 | 2 | 3 | 4 | 5 

这是我的试用版:

 Function MyRange(a, b, d) Dim Index As Integer, Number As Integer Dim Res() As Integer Index = 0 For Number = a To b Step d Res(Index) = Number Index = Index + 1 Next Number MyRange = Res End Function 

当我尝试这个时,Excel会抛出#VALUE! 我不知道有什么问题

顺便说一句,我之前有一个类似的问题没有得到答案,因为它太复杂了,所以我删除了它,简化了我的问题。

这一点清理工作给我。 主要是,我添加ReDim Preserve以保持添加到arrays的尺寸。

 Function MyRange(a As Integer, b As Integer, d As Integer) As Integer() Dim Index As Integer, Number As Integer Dim Res() As Integer Index = 0 For Number = a To b Step d ReDim Preserve Res(Index) Res(Index) = Number Index = Index + 1 Next Number MyRange = Res End Function 

您将遇到的问题是从C中select多less个列来input公式。 这将取决于d/b