КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Поля ввода ячеекПоле ввода ячеек (RefEdit) – элемент управления, позволяющий выбирать ячейки в рабочем листе Excel (аналогично тому, как это делается, например, при использовании функций в Excel). Пример 6. Требуется разработать программу для сортировки наборов чисел. В программе используется форма, приведенная на рисунке 8. В поле ввода ячеек, имеющем подпись Диапазон, выбирается диапазон ячеек, заполненных числами, из произвольного числа строк и одного столбца. В поле ввода ячеек Вывод указывается ячейка, с которой должен начинаться вывод результатов (отсортированного набора чисел). Сортировка выполняется при нажатии кнопки Сортировать. На странице Параметры размещаются два переключателя для выбора способа сортировки: по возрастанию или по убыванию. Для решения этой задачи следует разместить на пользовательской форме необходимые элементы управления. Сначала следует разместить элемент управления “Набор страниц” (MultiPage). Щелкнув правой кнопкой мыши по заголовку первой страницы (Page1), выбрать команду Rename и указать новое имя (в данном случае – Сортировка) в поле Caption. Аналогично переименовать вторую страницу (Page2). Разместить остальные элементы управления. На странице Сортировка разместить две надписи (Диапазон и Выход), два поля ввода ячеек (с именами diap_sort и diap_vyvod), две кнопки (с именами sort и vyhod). На странице Параметры разместить два переключателя (с именами sort_po_vozr и sort_po_ub) для выбора способа сортировки: по возрастанию или по убыванию. В процедуре инициализации формы предусмотреть, чтобы один из переключателей на странице Параметры был установлен, а другой – сброшен. Для обработки щелчка по кнопке Сортировать ввести следующую процедуру (здесь предполагается, что для этой кнопки установлено свойство Name – Sort): Private Sub sort_click() Dim massiv() As Single Set d = Range(diap_sort.Value) m = d.Rows.Count n = d.Columns.Count If n <> 1 Then MsgBox ("Неправильно выбран диапазон данных") Exit Sub End If Set dv = Range(diap_vyvod.Value) mm = dv.Rows.Count nn = dv.Columns.Count If (mm <> 1) Or (nn <> 1) Then MsgBox ("Неправильно указан адрес вывода") Exit Sub End If ReDim massiv(1 To m) For i = 1 To m massiv(i) = d.Cells(i).Value Next i If sort_po_vozr.Value = True Then Call sortirovka_v(massiv, m) Else Call sortirovka_ub(massiv, m) End If For i = 1 To m dv.Cells(i, 1).Value = massiv(i) Next i End Sub Здесь в строке Dim massiv() As Single объявлен динамический массив. В операторе Set d = Range(diap_sort.Value) переменная d связывается с диапазоном ячеек, выбранном в поле ввода ячеек diap_sort. В операторах m = d.Rows.Count и n = d.Columns.Count определяются размеры выбранного диапазона ячеек. Затем проверяется количество столбцов в выбранном диапазоне: оно должно быть равно 1. В операторе Set dv = Range(diap_vyvod.Value) переменная dv связывается с диапазоном, выбранным в поле ввода ячеек diap_vyvod. Затем проверяются размеры этого диапазона. Он должен представлять собой в точности одну ячейку (с нее будет начинаться вывод отсортированного массива). В оператореReDim massiv(1 To m)размер массива massiv устанавливается в соответствии с выбранным диапазоном. Затем в этот массив передается содержимое ячеек выбранного диапазона. В зависимости от того, какой из переключателей на странице Параметры установлен, вызывается одна из процедур сортировки: по возрастанию (sortirovka_v) или по убыванию (sortirovka_ub). В процедуру передается массив massiv, а также его размер (m). Затем в цикле содержимое отсортированного массива massiv выводится в столбец рабочего листа Excel, начиная с ячейки, указанной в полеdiap_ vyvod. Процедура сортировки по возрастанию может быть следующей: Sub sortirovka_v(a, m) For i = 1 To m - 1 For j = i + 1 To m If a(i) > a(j) Then x = a(i): a(i) = a(j): a(j) = x End If Next j Next i End Sub Процедура сортировки по убыванию полностью аналогична ей и отличается только знаком операции сравнения.
|