Arrays Excel VBA数组

Arrays Excel VBA数组,arrays,excel,vba,Arrays,Excel,Vba,这让我发疯。我试图从用户选择的行中提取符合条件(TRUE或1)的列的值,仅将这些值保存到数组中,然后将数组写入范围。这就是全部。谁能告诉我我做错了什么 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(c

这让我发疯。我试图从用户选择的行中提取符合条件(TRUE或1)的列的值,仅将这些值保存到数组中,然后将数组写入范围。这就是全部。谁能告诉我我做错了什么

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

此外,看起来您需要保留ReDim,否则您的数组值将被覆盖马特克里米人


这就是问题所在。谢谢你,马特。真希望我能给你一个肯定的答案,但是你把它作为一个评论贴了出来SteveS.

哪一行收到错误?实际上,我没有收到错误。我只是得到了意想不到的结果,即“selected_rep_needs”范围没有写入任何内容。此外,名为“y”的数组不包含除最后一个下标(“计数器”的最后一个值)之外的任何值。我不认为
应用程序中的range name参数。为
x(I)
赋值的Index
应该是“dev_需要\u hdrs”,而不仅仅是“dev_需要”(?)。此外,看起来您需要
ReDim Preserve
,否则您的数组值将被覆盖。谢谢matt!实际上,“开发人员需要HDR”是正确的。我补充了这一点,而不是重新定义“dev_needs”范围以包含标题行。可能是糟糕的编程。我不知道雷迪姆保护区。我现在要用谷歌搜索这个问题。你也应该接受你自己的答案,因为这将鼓励其他人研究这个问题并学习:)我会这样做,只要我被允许。确定你自己的答案需要三天的等待。谢谢你看了这条线。我很感激我在这里得到的快速帮助!