[英]Subscript out of range error with an array - no idea why?
我已經將數組聲明為Dim rArray() As Variant
但是當我嘗試使用存儲在其中的值時(如下所示),我得到一個下標超出范圍錯誤。 UBound(rArray)
和LBound(rArray)
都返回值 14 和 1,但錯誤發生在Debug.Print
行。
如果我使用如下的 for 語句
For Each rArr in rArray
然后它可以正常工作,但是出於創建此數組的目的,我需要 select 以該順序存儲的每個項目的靈活性 - 這意味着我需要使用下標來引用它們。
我已經嘗試了多種方法來嘗試解決這個問題,但沒有成功,我花了將近半天的時間來解決這個問題。 誰能指出我需要改變什么才能讓它工作。
Set rng = Range("D4", Range("D4").End(xlDown))
rng.NumberFormat = "0"
rArray = rng.Value
For x = UBound(rArray) To LBound(rArray) Step -1
Debug.Print rArray(x)
Next x
編輯:另一個值得一提的事實是,他的數組是在 Function 中聲明和使用的,但它不會從 function 傳遞或傳遞給 function。 不能在函數中聲明和使用 arrays 嗎?
當您將工作表值分配給變體數組時,您總是會得到一個基於1的二維數組(例如,1 到某物,1 到某物;從0 到某物,0 到某物)。 如果您從單列獲取值,則第二個排名僅為 1 比 1。
這可以通過以下來證明。
Dim x As Long, rArray As Variant, rng As Range
Set rng = Range("D4", Range("D4").End(xlDown))
rng.NumberFormat = "0" 'don't really understand why this is here
rArray = rng.Value
Debug.Print LBound(rArray, 1) & ":" & UBound(rArray, 1)
Debug.Print LBound(rArray, 2) & ":" & UBound(rArray, 2)
For x = UBound(rArray, 1) To LBound(rArray, 1) Step -1
Debug.Print rArray(x, 1)
Next x
所以你需要詢問數組第一列的元素; 僅僅要求元素是不夠的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.