2012-06-27 53 views
4

有很多問題以及處理VBA中的範圍/數組轉換的許多響應。我一直無法找到有效的答案,所以我真的會提供一些幫助。從範圍切換到數組並返回到VBA函數

下面是我想要做的事:

Function RangeToArrayToRange(inputRange As Range) As Range 
     Dim inputArray As Variant 
     inputArray = inputRange 
     'operations on inputArray' 
     '...' 
     Dim outputRange As Range 
     outputRange = inputArray 
     Set RangeToArrayToRange = outputRange 
    End Function 

預先感謝您的幫助!

+0

回答後,然後重新閱讀你的問題,我現在不清楚你的需要。也許你可以嘗試用文字解釋它(不是代碼,因爲這似乎是你的問題所在)。你不能將變量數組轉換爲Range,如果這就是你想要做的...... –

+0

我不確定你在問什麼,但記得在每個範圍內使用「Set」,例如'Set outputRange = inputArray'。 –

+0

請添加更多關於你想要做什麼的細節,以及你正在使用的內容(即單行,單列,多行/列等) – brettdj

回答

5

如果outputRange是範圍的左上角單元格填充:

outputRange.Resize(Ubound(inputArray,1), _ 
        Ubound(inputArray,2)).Value = inputArray 

編輯:我想這是你想要做

Function RangeToArray(inputRange As Range) As Variant 
    Dim inputArray As Variant 
    inputArray = inputRange.Value 

    'operations on inputArray 
    '...' 

    RangeToArray = inputArray 
End Function 

您可以使用此什麼在工作表上作爲用戶定義的函數(UDF)

  1. 選擇範圍是與「inputRange」(相同的行數/列數)相同的尺寸
  2. 在公式欄中輸入「= RangeToArray([yourinputrange])」,然後按Ctrl + Shift + Enter將公式輸入爲「數組公式」

這裏假設你沒有改變函數中inputArray的尺寸(上/下界)。

+0

感謝您的快速響應,Tim。我實施了你的建議,但我仍然獲得#VALUE!錯誤。 (編輯:我是新來的StackOverflow,所以我無法得到很好地添加在這裏的代碼) – nightTrevors

+1

看到我的評論你的問題:這將改善你的問題,如果你添加了你的代碼試圖達到你的代碼的描述。你得到#VALUE錯誤讓我覺得你正在試圖在工作表上使用你的函數作爲UDF。如果是這種情況,只需要返回inputArray(作爲Variant)並將公式輸入爲與輸入範圍具有相同尺寸的範圍內的數組公式。 –

+0

謝謝蒂姆!下次我一定會更具體。 – nightTrevors