2017-02-19 65 views
1

有誰知道如何從VBA中的一列數組中獲得真正的矢量? 我已經做了以下步驟:如何從vba中的數組中獲得一維矢量

'' read one column from 2D array 
Dim ixy() 
ixy = Application.Index(ts.Vertices, , 1) 

,一切都看沒事,直到我想REDIM載體和一個更大的價值添加到末尾:

ReDim Preserve ixy(LBound(ixy) To UBound(ixy) + 1, 1 To 1) 
ixy(UBound(ixy)) = ts.Vertices(1, 1) 

這根本不因爲我不能ReDim非數組的最後一維。那麼如何通過從數組中讀取一列來獲得一個向量呢?在本地窗口變量ixy看起來+ : ixy : : Variant(1 to 32, 1 to 1)所以它不是1D數組。

我知道如何服從循環,但只想用最少的代碼找到清晰的解決方案。有什麼建議麼?

+1

是'transpose'。第一個'ixy = Application.Index(ts.Vertices,,1)'保持不變,只需要進行轉置。多簡單的解決方案! 'ixy = Application.Transpose(ixy)'非常感謝這個建議! –

+0

我得到了參數關閉,但如果我沒記錯Transpose返回二維數組,並且Index(,0)一維數組 – Slai

+0

對我而言,第一個零解決方案不起作用。但第二個很棒。如果有問題,我使用Excel 2016,64位。 –

回答

1

INDEX function備註部分:

如果設置ROW_NUM或Column_num爲0(零),INDEX返回值的分別的整個行或列,所述陣列。

ixy = Application.Index(ts.Vertices, 0, 1) 
我想什麼

ixy = Application.Transpose(ts.Vertices) 
+0

'ixy = Application.Transpose(ixy)'工作,因爲'ixy = Application.Transpose(ts.Vertices)'轉置整個二維數組。第一個應該保持不變:'ixy = Application.Index(ts.Vertices,,1)'(不包括零) –