Использование процедуры в массивах. Visual Basic
А. Составить процедуру сортировки по убыванию значений отрицательных элементов массива В(N) (N - заданное число).
В. Используя процедуру рассортировать по убыванию значений элементов массив Х(7,6)
Модуль
Public Static Sub Sor(A(), k As Integer)
For I = 1 To k - 1
For J = I + 1 To k
If A(I) < A(J) Then bu = A(I): A(I) = A(J): A(J) = bu
Next J, I '
End Sub
FORM 2 - Задача A
[COLOR="Blue"]General Declarations
Dim I As Integer, J As Integer ' Индексы
Dim AA(), BB() As Integer ' массивы
Dim buu As Long ' bu - для хранения сортируемых данных
Dim nn As Integer ' Размерность
Private Sub Command1_Click() ' ввод исх.
nn = InputBox("Вв. кол-во эл-ов")
List1.Clear '
ReDim BB(1 To nn), AA(1 To nn) ' Переобъявление
Randomize
For I = 1 To nn '
BB(I) = Rnd * 100 - 50
List1.List(I - 1) = BB(I) '
Next I '
End Sub
Private Sub Command2_Click()
Dim kk As Integer ' переменная для подсчета отр. элементов массива
For I = 1 To nn '
Rem Если элемент массива отриц-ый
If BB(I) < 0 Then kk = kk + 1: AA(kk) = BB(I)
Next I '
Call Sor(AA(), kk) Вызов процедуры
List2.Clear
For I = 1 To kk
List2.List(I - 1) = AA(I) ' вывод рез - та
Next I
End Sub
Private Sub Command3_Click()
Form2.Hide
Form3.Show
End Sub[/COLOR]
FORM 3 - Задача Б
Dim kv As Integer ' Кол-во
Const n = 7
Const m = 6
Dim Bv(1 To n, 1 To m) As Integer ' Исходный двкмерный
Dim i, j As Integer
Dim Av(n * m) As Integer
Private Sub Command1_Click()
Randomize
For i = 1 To n
For j = 1 To m
Bv(i, j) = Rnd * 100 - 50
Print Bv(i, j),
Next j
Next i
End Sub
Private Sub Command2_Click()
For i = 1 To n
For j = 1 To m
kv = kv + 1
Av(kv) = Bv(i, j)
Next j
Next i
For i = 1 To kv
List1.List(i - 1) = Av(i)
Next i
End Sub
Private Sub Command3_Click()
Call Sor(Av, kv) ' Процедура
For i = 1 To kv
List2.List(i - 1) = Av(i)
Next i
End Sub
В FORM 1 процедура работает, а в FORM 2 COM 3 пишет Type Mismatch
Может я пропустила что-то