Ввод матрицы в синтаксис функции vba

#function #vba #matrix

#функция #vba #матрица

Вопрос:

У меня есть функция, которая вводит матрицу и выводит матрицу. Я вызываю ее в этой строке кода.

 cholesky = Application.WorksheetFunction.Cholesky2(covar)
  

Ошибка, которую я получаю, это «Ошибка времени выполнения ‘438’: объект не поддерживает это свойство или метод»

cholesky объявляется как:

 dim cholesky() as variant 
  

и covar объявляется как:

 dim covar(2,2) as double 
  

Я предполагаю, что здесь какая-то глупая синтаксическая ошибка, о которой я не знаю. Спасибо!

Ответ №1:

Это не функция рабочего листа, следовательно, вы получаете ошибку

Просто напишите

 choelsky = choelskyfunction(covar(2,2))
  

и это должно сработать.

P.S. Также используйте разные имена для переменной и функции.

Комментарии:

1. Хорошо, спасибо за помощь. Теперь, к сожалению, я думаю, что это просто ввод значения covar в (2,2), а не всей матрицы. Правильный ли этот синтаксис? Я получаю сообщение об ошибке, выданное мне внутри функции.

2. Это будет полностью зависеть от того, как вы реализовали функцию декомпозиции. На мой взгляд, covar (2,2) не генерирует матрицу, вам нужно сгенерировать вариантную матрицу и передать ее в функцию ch.decomposition.

3. итак, сделайте что-то вроде, затемните temp как вариант, temp = covar, cholesky = cholesky2(temp)?

4. да, что-то вроде этого.