Invalid qualifier при попытке определить длину массива внутри функции - VB

Узнай цену своей работы

Формулировка задачи:

Задача не суть важна. При попытке нажать кнопку, программа исправно работает до вызова функции, после чего выдаёт ошибку "invalid qualifier", и выделяет переменную m в 5 строке кода. Пробовал исправлять разными способами, в том числе статическими массивами вместо динамических, и параметром length вместо getlength(0) - результат одинаковый. Пожалуйста, помогите понять суть проблемы. Не уверен, что проблема в функции - попытка определить длину массива заканчивается крахом и в основной процедуре. Да, код сделан не в чистом VB, а в макросах MS Excel 2003/2007, надеюсь, я не ошибся с разделом. + проверялось на двух разных компах в разных версиях excel - сомневаюсь, что ошибка в ПО или железе. Заранее спасибо.
Листинг программы
  1. Public Function f(ByRef m() As Double) As Integer
  2. Dim n As Integer
  3. Dim i As Integer
  4. Dim s As Integer
  5. n = m.getlength(0)
  6. s = 0
  7. For i = 1 To n
  8. If m(i) < 0 Then
  9. s = s + 1
  10. End If
  11. Next i
  12. f = s
  13. End Function
  14. Sub Command1_Click()
  15. Randomize
  16. Dim n As Integer
  17. Dim m1() As Double
  18. Dim m2() As Double
  19. Dim i As Integer
  20. n = InputBox("n1")
  21. ReDim m1(n)
  22. For i = 1 To n
  23. m1(i) = Rnd() - 0.5
  24. Cells(i, 1) = m1(i)
  25. Next i
  26. n = InputBox("n2")
  27. ReDim m2(n)
  28. For i = 1 To n
  29. m2(i) = Rnd() - 0.5
  30. Cells(i, 2) = m2(i)
  31. Next i
  32. If f(m1) < f(m2) Then
  33. MsgBox ("m2")
  34. Else
  35. MsgBox ("m1")
  36. End If
  37. End Sub

Решение задачи: «Invalid qualifier при попытке определить длину массива внутри функции»

textual
Листинг программы
  1. 'n = m.getlength(0)
  2. s = 0
  3. For i = lbound(m) To ubound(m)
  4.  If m(i) < 0 Then
  5.   s = s + 1
  6.  End If
  7. Next i
  8. f = s

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы