2014-09-02 101 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