簡體   English   中英

Excel VBA中的數組函數

[英]Array function in Excel VBA

我在VBA中有一個生成字符串數組的函數。 從另一個VBA函數調用它時工作正常,但從工作表調用時則不行。

以下是它應該如何使用:

  • 選擇A1:A3
  • 寫入公式欄=Test() ,然后Ctrl-Shift-Enter使其成為一個數組函數
  • A1應包含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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM