2017-08-07 24 views
0

我正在学习和编写Excel VBA函数以满足我的需求,而且我被卡住了(很确定它很容易,但我无法弄清楚错误,因为excel只返回#VALUE作为错误消息) 我已经写了一个vba函数来返回一些数据,并且一切都很好,直到结束。我有一个集合(选择)的结果,但我不能让该函数将结果写入同一行中的单元格。我正尝试使用range.offset内的for循环:从函数返回结果到具有偏移量的单元格

For t = 1 To chosen.Count 
Application.Caller.Offset(0, t).Value = chosen(t) 
Next t 

所以对1,我想从选择(1)要返回到右侧,同一行的单元格的值。然后为2,它将转到右边的第二个单元格等。

回答

1

用作公式的UDF或用户定义的函数不能影响另一个单元格的值。

现在,如果您想要在一个范围内放置一组数值,那么您只需选择输出的单元格并使用Ctrl-Shift-Enter进行确认。

使用此函数返回的数组:

Function myArr() As Variant() 
myArr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) 
End Function 

我选择A1:I1与A1活性。

enter image description here

然后我在公式编辑栏中输入

=myArr() 

,然后按Ctrl-Shift键输入,而不是输入。 Excel会将公式放在所有九个单元格中,并将{}放在公式的周围。该阵列将被放入这九个单元格中。

enter image description here

+0

我有一个集合而不是一个数组,它有关系吗?当我用'myArr = selected'或'myArr = chosen()'结束函数时,出现错误#VALUE。 – Ugur

+0

将集合推送到一个数组中,它工作。不管怎么说,还是要谢谢你。 – Ugur