Страницы: 1
RSS
Application.WorksheetFunction.MInverse выдает ошибку
 
Помогите пожалуйста. При выполнении кода:  
 
Sub MInverse()  
ReDim A(2, 2) As Variant  
ReDim A1(2, 2) As Variant  
A(1, 1) = 4  
A(1, 2) = A(2, 1) = 26.25  
A(2, 2) = 6.5625  
A1 = Application.WorksheetFunction.MInverse(A)  
End Sub  
 
выдает ошибку:  
 
Run time error '1004':  
 
Невозможно получить свойство MInverse класса  
WorksheetFunction  
 
В чем проблема?  
Заранее спасибо!
 
{quote}{login=Lyakysha}{date=27.08.2011 01:35}{thema=Application.WorksheetFunction.MInverse выдает ошибку}{post}Помогите пожалуйста. При выполнении кода:  
 
Sub MInverse()  
ReDim A(2, 2) As Variant  
ReDim A1(2, 2) As Variant  
A(1, 1) = 4  
A(1, 2) = A(2, 1) = 26.25  
A(2, 2) = 6.5625  
A1 = Application.WorksheetFunction.MInverse(A)  
End Sub  
 
выдает ошибку:  
 
Run time error '1004':  
 
Невозможно получить свойство MInverse класса  
WorksheetFunction  
 
В чем проблема?  
Заранее спасибо!{/post}{/quote}  
 
Разобрался сам, почему-то заработало вот в таком виде:  
 
Dim A() As Variant  
Dim A1() As Variant  
Sub MInverse()  
ReDim A(1 To 2, 1 To 2) As Variant  
ReDim A1(2, 2) As Variant  
A(1, 1) = 4  
A(1, 2) = 26.25  
A(2, 1) = 26.25  
A(2, 2) = 6.5625  
With Application  
A1 = .MInverse(A)  
End With  
f = MsgBox(A1(1, 1) & Chr(13) & Chr(10) & A1(1, 2) & Chr(13) & Chr(10) & A1(2, 1) & Chr(13) & Chr(10) & A1(2, 2), vbOKOnly)  
End Sub  
 
Ещё бы знать почему?:)
 
Из справки по Excel-функции МОБР():  
"Если какая-либо из ячеек в массиве ПУСТА или содержит текст, то функция МОБР возвращает значение ошибки #ЗНАЧ!"  
 
Объявление ReDim A(2, 2) равносильно ReDim A(0 To 2, 0 To 2) - матрица 3x3.  
А для типа Variant значения элементов массива после объявления Dim/Redim - ПУСТЫЕ, т.е. равны Empty.  
 
В примере1 вектор A(0, ...) заполнен пустыми значениями Empty, что является источником ошибки.  
Если бы в начале модуля было объявление Option Base 1, то этой ошибки бы не было.  
 
Кроме того, там есть еще одна ошибка:  
A(1, 2) = A(2, 1) = 26.25  
равносилно A(1, 2) = (A(2, 1) = 26.25)  
или, что то же самое: A(1, 2) = False  
Такое нечисловое значение также приводит к ошибке MInverse(A)  
Правильно так:  
A(1, 2) = 26.25  
A(2, 1) = 26.25
 
{quote}{login=ZVI}{date=27.08.2011 03:52}{thema=}{post}Из справки по Excel-функции МОБР():  
"Если какая-либо из ячеек в массиве ПУСТА или содержит текст, то функция МОБР возвращает значение ошибки #ЗНАЧ!"  
 
Объявление ReDim A(2, 2) равносильно ReDim A(0 To 2, 0 To 2) - матрица 3x3.  
А для типа Variant значения элементов массива после объявления Dim/Redim - ПУСТЫЕ, т.е. равны Empty.  
 
В примере1 вектор A(0, ...) заполнен пустыми значениями Empty, что является источником ошибки.  
Если бы в начале модуля было объявление Option Base 1, то этой ошибки бы не было.  
 
Кроме того, там есть еще одна ошибка:  
A(1, 2) = A(2, 1) = 26.25  
равносилно A(1, 2) = (A(2, 1) = 26.25)  
или, что то же самое: A(1, 2) = False  
Такое нечисловое значение также приводит к ошибке MInverse(A)  
Правильно так:  
A(1, 2) = 26.25  
A(2, 1) = 26.25{/post}{/quote}  
Спасибо.
Страницы: 1
Читают тему
Наверх