Студопедия
rus | ua | other

Home Random lecture






VBA4. Сортировка чисел в столбце по возрастанию или убыванию


Date: 2015-10-07; view: 514.


Рекомендации.

Для определения m и n в функциях Mrow и Ncol применить циклы типа Do-Loop:

Function Mrow() As Integer

Dim i As Integer

i = 1

Do Until IsEmpty (Cells(i, 1))

i = i + 1

Loop

Mrow = i - 1

End Function

Процедура TabA должна иметь следующий заголовок:

Sub TabA(m As Integer, n As Integer, A( ) as Single)

Для копирования таблицы в массив A использовать двойной цикл типа For-Next:

For i=1 To m

For j=1 To n

A(i,j)=Cells(i,j).Value

Next j

Next i

Для вычисления сумм столбцов в событийной процедуре также использовать двойной цикл, полагая, что исходные данные находятся в массиве A. Здесь внешний цикл - по j. Он включает в себя начальное присваивание S=0, цикл по i, в котором наращивается значение S, и, наконец, присваивание j-го результата: Cells(i,j).Value = S

 

 

1. На листе Excel для создания интерфейса пользователя разместите элементы управления: надпись Номер столбца; поле TextBox1 и счетчик SpinButton1 для указания номера столбца; переключатели Option1, Option2 с надписями По возрастанию, По убыванию и кнопку с надписью Сортировать - см. рисунок.

 
 

 

 


2. Для поля TextBox1 и для счетчика SpinButton1 установите свойство Value=1. Кроме того, для счетчика установите значения свойств Min=1 и Max=20. Для счетчика создайте событийную процедуру SpinButton1_Change() – при изменении пользователем значения счетчика она должна изменять значение TextBox1.Value, делая его равным значению счетчика. Точно так же для поля TextBox1 создайте событийную процедуру TextBox1_Change() – она должна изменять значение (свойство Value) счетчика, как только пользователь изменит значение, хранимое в текстовом поле.

3. Создайте событийную процедуру, соответствующую командной кнопке. Эта процедура должна определить номер j столбца, подлежащего сортировке, количество чисел m в этом столбце и выполнить сортировку методом пузырька. В процедуре зарезервируйте целые переменные i, j, m, переменную F типа Variant и переменные Flag и R типа Boolean. Процедура сортировки методом пузырька может включать следующие блоки:

1) Flag=False (признак того, что еще не было перестановок чисел в столбце j); i=2;

2) R = Cells(i-1,j).Value - Cells(i,j).Value (R = True, если значение в ячейке i-1 больше, чем в i;

3) если надо сортировать по возрастанию, то R = Cells(i,j).Value - Cells(i-1,j).Value;

4) если R=True, то исполняется блок 5;

5) F = Cells(i-1,j).Value; Cells(i-1,j).Value = Cells(i,j).Value; Cells(i,j).Value = F ; Flag=True; (перестановка чисел, регистрация этого факта путем присваивания Flag=True)

6) i=i+1; если i <= m , то передача управления блоку 2 - для сравнения следующей пары чисел;

7) Если Flag =True, то передача управления блоку 1, иначе конец, т.к. перестановок не было.

 


<== previous lecture | next lecture ==>
VBA3. Переменные, процедуры, функции, циклы, массивы | С созданием формы
lektsiopedia.org - 2013 год. | Page generation: 0.195 s.