Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Поля ввода ячеек




Поле ввода ячеек (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

Процедура сортировки по убыванию полностью аналогична ей и отличается только знаком операции сравнения.

 


Поделиться:

Дата добавления: 2015-08-05; просмотров: 111; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты