【编程技术】求高手看看如下的VBA代码,目前总是error,说 out of memory
登录 | 论坛导航 -> 华新鲜事 -> 技术の宅 | 本帖共有 3 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:mydreamsg (等级:2 - 初出茅庐,发帖:57) 发表:2015-05-12 19:06:42  楼主  关注此帖
【编程技术】求高手看看如下的VBA代码,目前总是error,说 out of memory

我有如下的代码,总是提示提示 out of memory,求高手优化一下

 

Function Sparsekv(kv() As Double, ByRef KVD() As Double, ByRef kvsi() As Long, ByVal neq As Long, ByVal nband As Long) As Long

Dim i As Long, j As Long, k As Long, L As Long, n As Long, NumRows As Long, NumNon0 As Long, LB As Long, KVD2() As Double, KVsi2() As Long

Dim MaxRows As Long, IndexA() As Long


    LB = LBound(kv)

    NumRows = UBound(kv) - LB + 1

 

    For i = LB To NumRows + LB - 1

        If kv(i) <> 0 Then NumNon0 = NumNon0 + 1

    Next i

    MaxRows = neq * (nband + 1) - 1

 

 

    ReDim KVD(0 To NumNon0 - 1)

    ReDim kvsi(0 To NumNon0 - 1, 0 To 1)

    ReDim KVD2(0 To MaxRows)                  

    ReDim KVsi2(0 To MaxRows, 0 To 1)          '在这行总是提示out of memory

    ReDim IndexA(0 To neq, 0 To nband + 1)      '有时候是在这行提示 提示out of memory

  

    i = 1

    n = 0

    k = -1

    For j = 1 To nband + 1

 

        n = (j - 1) * (neq)

        For i = 1 To neq - j + 1

            If kv(n + i) <> 0 Then

                k = k + 1

                'L = (i - 1) * nband + k

                KVD2(k) = kv(n + i)

                KVsi2(k, 0) = i - 1

                KVsi2(k, 1) = i + j - 2

                IndexA(i - 1, 0) = IndexA(i - 1, 0) + 1

                IndexA(i - 1, IndexA(i - 1, 0)) = k

            End If

        Next i

    Next j

 

    k = 0

    For i = 0 To neq

        For j = 1 To IndexA(i, 0)

            n = IndexA(i, j)

            KVD(k) = KVD2(n)

            kvsi(k, 0) = KVsi2(n, 0)

            kvsi(k, 1) = KVsi2(n, 1)

            k = k + 1

        Next j

    Next i

 

End Function

 

我查看了一下 :

 

NumNon0=93214
MaxRows=50380469
neq=7959
nband=6329
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:mydreamsg (等级:2 - 初出茅庐,发帖:57) 发表:2015-05-12 19:29:38  2楼
【编程技术】求高手看看如下的VBA代码,目前总是error,说 out of memory我有如下的代码,总是提示提示 out of memory,求高手优化一下   Function Sparsekv(kv() As Double, ByRef KVD() As Double, ByRef kvsi() As Long, ByVal neq As Long, ByVal nband As Long) As Long Dim i As Long, j As Long, k As Long, L As Long, n As Long, NumRows As Long, NumNon0 As Long, LB As Long, KVD2() As Double, KVsi2() As Long Dim MaxRows As Long, IndexA() As Long     LB = LBound(kv)     NumRows = UBound(kv) - LB + 1       For i = LB To NumRows + LB - 1         If kv(i) 0 Then NumNon0 = NumNon0 + 1     Next i     MaxRows = neq * (nband + 1) - 1         ReDim KVD(0 To NumNon0 - 1)     ReDim kvsi(0 To NumNon0 - 1, 0 To 1)     ReDim KVD2(0 To MaxRows)                       ReDim KVsi2(0 To MaxRows, 0 To 1)          '在这行总是提示out of memory     ReDim IndexA(0 To neq, 0 To nband + 1)      '有时候是在这行提示 提示out of memory        i = 1     n = 0     k = -1     For j = 1 To nband + 1   (more...)
有什么解决办法没有啊?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:mydreamsg (等级:2 - 初出茅庐,发帖:57) 发表:2015-05-12 20:04:06  3楼
【编程技术】求高手看看如下的VBA代码,目前总是error,说 out of memory我有如下的代码,总是提示提示 out of memory,求高手优化一下   Function Sparsekv(kv() As Double, ByRef KVD() As Double, ByRef kvsi() As Long, ByVal neq As Long, ByVal nband As Long) As Long Dim i As Long, j As Long, k As Long, L As Long, n As Long, NumRows As Long, NumNon0 As Long, LB As Long, KVD2() As Double, KVsi2() As Long Dim MaxRows As Long, IndexA() As Long     LB = LBound(kv)     NumRows = UBound(kv) - LB + 1       For i = LB To NumRows + LB - 1         If kv(i) 0 Then NumNon0 = NumNon0 + 1     Next i     MaxRows = neq * (nband + 1) - 1         ReDim KVD(0 To NumNon0 - 1)     ReDim kvsi(0 To NumNon0 - 1, 0 To 1)     ReDim KVD2(0 To MaxRows)                       ReDim KVsi2(0 To MaxRows, 0 To 1)          '在这行总是提示out of memory     ReDim IndexA(0 To neq, 0 To nband + 1)      '有时候是在这行提示 提示out of memory        i = 1     n = 0     k = -1     For j = 1 To nband + 1   (more...)
,谢谢你的建议
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
论坛导航 -> 华新鲜事 -> 技术の宅 | 返回上一页 | 本主题共有 3 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码