Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将数组传递到其循环之外?_Arrays_Loops_Excel_Vba - Fatal编程技术网

Arrays 如何将数组传递到其循环之外?

Arrays 如何将数组传递到其循环之外?,arrays,loops,excel,vba,Arrays,Loops,Excel,Vba,我已经在vba中的sub中编写了这篇文章,但是我不知道如何在循环之外获得最终的_数组。我想转换到工作表或保存到全局多维数组 Dim lent As Long Dim end_ct As Long end_ct = 0 Dim final_array() As Variant ReDim Preserve final_array(11) final_array(0) = Range("B2").value final_array(1) = Range("B3").value j = 8

我已经在vba中的sub中编写了这篇文章,但是我不知道如何在循环之外获得最终的_数组。我想转换到工作表或保存到全局多维数组

Dim lent As Long
Dim end_ct As Long


end_ct = 0

Dim final_array() As Variant
ReDim Preserve final_array(11)


final_array(0) = Range("B2").value
final_array(1) = Range("B3").value

j = 8
'Debug.Print final_array(0)
'Debug.Print final_array(1)

For lent = 2 To 11 Step 1


    If lent Mod 2 = 0 Then

        ReDim Preserve final_array(11)
        final_array(lent) = end_pt(end_ct) - strt_pt(end_ct)

        end_ct = end_ct + 1
        'Sheets("SingleEquityHistoryHedge").Cells(47, lent + 1).value = final_array(lent)
    Else

        'gets average over pattern period
        Dim avg_rng As Range
        Set avg_rng = Sheets("SingleEquityHistoryHedge").Range(Cells(strt_pt(end_ct), j), Cells(end_pt(end_ct) - 1, j))
        'Debug.Print sum_rng
        Dim avg_value As Double
        avg_value = avgVal(avg_rng)

        ReDim Preserve final_array(11)
        final_array(lent) = avg_value

       ' Sheets("SingleEquityHistoryHedge").Cells(47, lent + 2).FormulaArray = _
       ' "=AVERAGE(IF(ISNUMBER(" & avg_rng.Address & ")," & avg_rng.Address & "))"

        j = j + 1
    End If




   ' Debug.Print final_array(lent)
'    Debug.Print final_array

'    If lent = 11 Then
'        Range("A" & pos).Select
'        Application.WorksheetFunction.Transpose (final_array)
'    End If

Next lent


我的目标是能够在循环外打印最终的_数组。任何帮助都将不胜感激。

我没有检查您的代码是否正在填充数组,但如果是在循环之后,您可以使用此命令将该数组写入任何单元格(我使用A1作为示例)


什么不起作用?由于您在循环开始之前声明了final_数组,因此您应该能够在循环结束后访问它。当我尝试使用调试时,打印final_数组或应用程序。转置(final_数组)它不会返回任何内容。。。。我打印了数组的所有单个元素,所以我知道值在那里,只是不确定为什么我不能在循环外转置它
Range("A1").Resize(UBound(final_array) + 1, 1) = _
Application.WorksheetFunction.Transpose(final_array)