2014-09-02 146 views
0

這使我變得瘋狂。我試圖從用戶選擇的行中提取符合我的條件(TRUE或1)的列的值,僅將這些值保存到數組中,然後將數組寫入一個範圍。就這樣。誰能告訴我我做錯了什麼?Excel VBA數組

Sub DevNeeds() 
Dim x(), y(), needs() As Variant 
Dim counter As Integer 

columns_in_range = Range("dev_needs_hdrs").Columns.Count 
counter = 1 

Debug.Print "i", "counter", "y(counter)" 

For i = 1 To columns_in_range 
    ReDim x(columns_in_range), needs(columns_in_range) 
    x(i) = Application.Index(Range("dev_needs"), Range("selected_row").Value, i) 
    needs(i) = Application.Index(Range("dev_needs_hdrs"), 1, i) 

    If (x(i) = True Or x(i) = 1) Then 
     ReDim y(counter) 
     y(counter) = needs(i) 
     counter = counter + 1 
    End If 
Next i 
counter = counter - 1 

With Range("selected_rep_needs") 
    .ClearContents 
    .Resize(1, counter) = y 
End With 

End Sub 
+0

什麼行接收錯誤? – 2014-09-02 19:42:42

+0

其實,我沒有收到錯誤。我只是得到意想不到的結果,即範圍「selected_rep_needs」沒有得到任何寫入的結果。另外,名爲「y」的數組除了最後一個下標(最後一個值爲「counter」)以外不包含任何值 – SteveS 2014-09-02 19:56:39

+0

我不假設'Application.Index'中的範圍名稱參數將值賦給'x(我)'應該是「dev_needs_hdrs」,而不僅僅是「dev_needs」(?)。 – 2014-09-02 20:04:40

回答

2

此外,它看起來像你需要ReDim保存或您的數組值將被覆蓋。 - 馬特Cremeens

這是問題所在。謝謝馬特。希望我能給你答案的答案,但你發佈它作爲評論! - SteveS。

+0

你也應該接受你自己的答案,因爲這會鼓勵其他人研究這個問題,並學習以及:) – StorymasterQ 2014-09-03 01:32:14

+0

我會盡快做到這一點,只要我被允許。這是一個3天的等待,確定你自己的答案。儘管感謝您看線程。我很欣賞我在這裏得到的快速幫助! – SteveS 2014-09-03 05:49:20