Meskit
12-02-2009, 11:25 AM
Hi all. iīm new to this forum. Recently, developing my master thesis, i had to run a simple code in vba, for least squares formulation. I get an error in the end, evean when itīs similar to the above code - Run Time Error 1004 - Application-defined or Object-defined error. Later i received the following error as well: Out of Memory. in line :banghead: ("mmmm = Application.WorksheetFunction.MMult(mmm, fcrit_aux)"
If someone could help me i would appreciate that, i am no expert in vba, but i had look at this end for many hours, and didnīt find anything that solve my problem! Some code is just to comprove what i was doing.
Dim m(1 To 50, 1 To 50), fcrit(1 To 50)
Dim m_aux(), mt_aux(), fcrit_aux()
Dim mt(), mm(), mn(), mmm(), mmmm()
Dim pop, nv, i, j As Double
Sub teste()
pop = 6
nv = 3
ReDim m_aux(1 To pop, 1 To nv)
ReDim fcrit_aux(1 To pop)
For i = 1 To pop
For j = 1 To nv
m(i, j) = Rnd() * 20
m_aux(i, j) = m(i, j)
Cells(i, j) = m(i, j)
Next j
fcrit(i) = Rnd() * 10
fcrit_aux(i) = fcrit(i)
Cells(i, 5) = fcrit(i)
Next i
mt = Application.WorksheetFunction.Transpose(m_aux)
For i = 1 To nv
For j = 1 To pop
Cells(i + 10, j) = mt(i, j)
Next j
Next i
mm = Application.WorksheetFunction.MMult(mt, m_aux)
For i = 1 To nv
For j = 1 To nv
Cells(i + 15, j) = mm(i, j)
Next j
Next i
ReDim minv(1 To nv, 1 To nv)
minv = Application.WorksheetFunction.MInverse(mm)
For i = 1 To nv
For j = 1 To nv
Cells(i + 20, j) = minv(i, j)
Next j
Next i
ReDim mmm(1 To nv, 1 To pop)
mmm = Application.WorksheetFunction.MMult(minv, mt)
For i = 1 To nv
For j = 1 To pop
Cells(i + 25, j) = mmm(i, j)
Next j
Next i
ReDim mmmm(1 To nv)
mmmm = Application.WorksheetFunction.MMult(mmm, fcrit_aux):banghead:
For i = 1 To nv
Cells(i + 29) = mmmm(i)
Next i
End Sub
If someone could help me i would appreciate that, i am no expert in vba, but i had look at this end for many hours, and didnīt find anything that solve my problem! Some code is just to comprove what i was doing.
Dim m(1 To 50, 1 To 50), fcrit(1 To 50)
Dim m_aux(), mt_aux(), fcrit_aux()
Dim mt(), mm(), mn(), mmm(), mmmm()
Dim pop, nv, i, j As Double
Sub teste()
pop = 6
nv = 3
ReDim m_aux(1 To pop, 1 To nv)
ReDim fcrit_aux(1 To pop)
For i = 1 To pop
For j = 1 To nv
m(i, j) = Rnd() * 20
m_aux(i, j) = m(i, j)
Cells(i, j) = m(i, j)
Next j
fcrit(i) = Rnd() * 10
fcrit_aux(i) = fcrit(i)
Cells(i, 5) = fcrit(i)
Next i
mt = Application.WorksheetFunction.Transpose(m_aux)
For i = 1 To nv
For j = 1 To pop
Cells(i + 10, j) = mt(i, j)
Next j
Next i
mm = Application.WorksheetFunction.MMult(mt, m_aux)
For i = 1 To nv
For j = 1 To nv
Cells(i + 15, j) = mm(i, j)
Next j
Next i
ReDim minv(1 To nv, 1 To nv)
minv = Application.WorksheetFunction.MInverse(mm)
For i = 1 To nv
For j = 1 To nv
Cells(i + 20, j) = minv(i, j)
Next j
Next i
ReDim mmm(1 To nv, 1 To pop)
mmm = Application.WorksheetFunction.MMult(minv, mt)
For i = 1 To nv
For j = 1 To pop
Cells(i + 25, j) = mmm(i, j)
Next j
Next i
ReDim mmmm(1 To nv)
mmmm = Application.WorksheetFunction.MMult(mmm, fcrit_aux):banghead:
For i = 1 To nv
Cells(i + 29) = mmmm(i)
Next i
End Sub