Invalid qualifier при попытке определить длину массива внутри функции - VB
Формулировка задачи:
Задача не суть важна. При попытке нажать кнопку, программа исправно работает до вызова функции, после чего выдаёт ошибку "invalid qualifier", и выделяет переменную m в 5 строке кода. Пробовал исправлять разными способами, в том числе статическими массивами вместо динамических, и параметром length вместо getlength(0) - результат одинаковый.
Пожалуйста, помогите понять суть проблемы. Не уверен, что проблема в функции - попытка определить длину массива заканчивается крахом и в основной процедуре.
Да, код сделан не в чистом VB, а в макросах MS Excel 2003/2007, надеюсь, я не ошибся с разделом.
+ проверялось на двух разных компах в разных версиях excel - сомневаюсь, что ошибка в ПО или железе.
Заранее спасибо.
Листинг программы
- Public Function f(ByRef m() As Double) As Integer
- Dim n As Integer
- Dim i As Integer
- Dim s As Integer
- n = m.getlength(0)
- s = 0
- For i = 1 To n
- If m(i) < 0 Then
- s = s + 1
- End If
- Next i
- f = s
- End Function
- Sub Command1_Click()
- Randomize
- Dim n As Integer
- Dim m1() As Double
- Dim m2() As Double
- Dim i As Integer
- n = InputBox("n1")
- ReDim m1(n)
- For i = 1 To n
- m1(i) = Rnd() - 0.5
- Cells(i, 1) = m1(i)
- Next i
- n = InputBox("n2")
- ReDim m2(n)
- For i = 1 To n
- m2(i) = Rnd() - 0.5
- Cells(i, 2) = m2(i)
- Next i
- If f(m1) < f(m2) Then
- MsgBox ("m2")
- Else
- MsgBox ("m1")
- End If
- End Sub
Решение задачи: «Invalid qualifier при попытке определить длину массива внутри функции»
textual
Листинг программы
- 'n = m.getlength(0)
- s = 0
- For i = lbound(m) To ubound(m)
- If m(i) < 0 Then
- s = s + 1
- End If
- Next i
- f = s
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д