[英]Array function in Excel VBA
我在VBA中有一個生成字符串數組的函數。 從另一個VBA函數調用它時工作正常,但從工作表調用時則不行。
以下是它應該如何使用:
=Test()
,然后Ctrl-Shift-Enter
使其成為一個數組函數 A
,A2應包含B
,A3應包含C
當我實際嘗試這個時,它將A
放在數組的所有三個單元格中。 如何將Test
返回的數據導入陣列的不同單元格?
對於那些想要看到它的人來說,這是函數的代碼。 請記住,從其他函數調用時,該函數可以正常工作。
Function Test() As String()
Dim a(1 To 3) As String
a(1) = "A"
a(2) = "B"
a(3) = "C"
Test = a
End Function
如果轉置數據,則函數可以正常工作。 為此,您需要Variant()
而不是String()
:
Function Test() As Variant()
Dim a(1 To 3) As Variant
a(1) = "A"
a(2) = "B"
a(3) = "C"
Test = Application.Transpose(a)
End Function
您可能想查看Chip Pearson關於從UDF返回數組的建議 。
這是我在這里的第一個回應。 我希望這不合適。
我發現總是使用二維數組最簡單,然后你不需要轉置等
Function Test() As String()
Dim a(1 To 3, 1) As String
a(1, 1) = "A"
a(2, 1) = "B"
a(3, 1) = "C"
Test = a
End Function
剛想出問題 - 從VBA到Excel的數組的第一個維度是水平的 ,而不是垂直的。 要查看Test
的輸出,請將數組函數=Test()
放在A1:C1 (不是A1:A3)中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.