Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2011, 18:08   #1
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию VBA сортировка одномерного массива

Условие
відсортувати елементи заданого стовпчика за умовою зменшення величини його елементів
Мм не одномерного а двумерного =)

Тут я попытался по возрастанию , но в строке Arr(j, 1) > Kas
выбивает Sabscript out of range , хотя я не знаю что может тут выходить за пределы
Помогите исправить ошибку
Код:
Private Sub CommandButton2_Click()
Dim i, Arr(), Tmp, p, j, n, Kas As Double
    If Selection.Columns.Count > 1 Then MsgBox "кол-во столбцов>1"
    If Selection.Columns.Count > 1 Then Exit Sub
    If Selection.Cells.Count = 1 Then MsgBox "кол-во ячеек<2"
    If Selection.Cells.Count = 1 Then Exit Sub
    Mas = Selection.Value
    p = Selection.Rows.Count
    n = p
    Arr = Mas
   For i = 0 To n - 1
        For j = 0 To n - 2 - i
            Kas = Arr(j + 1, 1)
            If Arr(j, 1) > Kas Then
                Tmp = Arr(j, 1)
                Arr(j, 1) = Kas
                Arr(j + 1, 1) = Tmp
            End If
        Next j
    Next i

For i = 1 To p
Selection.Cells(1, i + 2) = Arr(i, 1)
Next
MsgBox k
End Sub
И еще вопрос почему например Mas = Mas1 можно ,а по элементно
нельзя присвоить т.е. p - фиксированное число
Код:
For i=1 to p  
Mas(i,1)=Mas1(i,1)
Next
MIKE11IPME вне форума Ответить с цитированием
Старый 17.04.2011, 20:58   #2
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Рабочий исправленный вариант=)
Код:
Private Sub CommandButton1_Click()
Dim i, j As Long, Arr(), Tmp, n, Kas As Double
    If Selection.Columns.Count > 1 Then MsgBox "кол-во столбцов>1"
    If Selection.Columns.Count > 1 Then Exit Sub
    If Selection.Cells.Count = 1 Then MsgBox "кол-во ячеек<2"
    If Selection.Cells.Count = 1 Then Exit Sub
    Arr = Selection.Value
    n = Selection.Rows.Count
    For i = 0 To n - 1
        For j = 1 To n - 1 - i
            If Arr(j, 1) > Arr(j + 1, 1) Then
                Tmp = Arr(j, 1)
                Arr(j, 1) = Arr(j + 1, 1)
                Arr(j + 1, 1) = Tmp
            End If
        Next
    Next

For i = 1 To n
Selection.Cells(1, i + 2) = Arr(i, 1)
Next
End Sub
MIKE11IPME вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка одномерного массива imperceptible4462 Помощь студентам 10 07.09.2010 09:35
Сортировка одномерного массива Гамбит Помощь студентам 2 02.11.2009 00:28
Сортировка одномерного массива laponka Помощь студентам 7 14.09.2009 09:00
Сортировка одномерного массива введенного с клавиатуры по возрастанию sande Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 18.01.2009 20:31
Сортировка одномерного массива (ASM & C) voron Помощь студентам 0 02.12.2007 13:41