2017-08-07 23 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