![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Технология выполнения. Первое диалоговое окно уже существует (пример 57), оно реализует заполнение базы данных
Первое диалоговое окно уже существует (пример 57), оно реализует заполнение базы данных. С помощью второго диалогового окна будет реализовываться сортировка записей таблицы. Примечание. Пересохраните работу Пример57 как Пример59. Второе диалоговое окно (UserForm2, рис. 113) позволяет осуществлять сортировку записей таблицы (рис. 114) по одному из двух критериев: • продолжительности тура; • фамилии.
Рис. 113. Форма 2 для примера 59
Также предоставляется выбор сортировки по возрастанию или по убыванию. Интересной особенностью этого диалогового окна является название второй кнопки. При появлении на экран кнопка носит название «Отмена», а после осуществления сортировки получает название «Закрыть». Для облегчения написания кода сортировки следует воспользоваться макрорекордером. После включения записи выполните следующие шаги: 1) выделите записи базы данных; 2) выберите в меню < Данные> < Сортировка>; 3) при появлении диалогового окна выберите поле, по которому осуществляется сортировка, а также ее направление; 4) нажмите Enter; 5) выключите макрорекордер. При просмотре полученного макроса можно обнаружить несколько операторов, которые станут шаблоном для кода. Это выделение области сортировки (записей базы) и собственно сама процедура сортировки. Примерно так: Range(«A2: H5»).Select Selection.Sort Key1: =Range(«A2»), Order1: =xlAscending, Key2: =Range(«B2»), Order2: =xlAscending, Key3: =Range(«E2»), Order3: =xlDescending, Header: =xlGuess, OrderCustom: =1, MatchCase: =False, Orientation: =xlTopToBottom Что придется корректировать: 1) область сортировки. Необходимость корректирования вполне ясна: количество записей может быть меньше либо больше, чем в данный момент. Для определения числа записей воспользуемся известным приемом (см. пример 57); 2) поле, по которому осуществляется сортировка. Необходимо предусмотреть выбор поля перед самой сортировкой (в элементе управления «Поле со списком» (ComboBox1)); 3) направление сортировки. Также нужно предусмотреть выбор одного варианта из двух (переключатель OptionButton1 или OptionButton2). Создайте форму UserForm2. Затем в окне ее кода создайте процедуру для кнопки ОК. Private Sub CommandButton1_Click() КоличествоСтрок = Application.CountA(ActiveSheet.Columns(1)) 'Количество записей в базе Range(Cells(2, 1), Cells(КоличествоСтрок, 8)).Select 'выделение области сортировки If ComboBox1.Value = «фамилии» Then KeySort = «A2» 'ключ сортировки – поле с фамилией Else KeySort = «H2» 'ключ сортировки – поле со сроком поездки End If 'Сортировка If OptionButton1.Value Then 'по возрастанию Selection.Sort Key1: =Range(KeySort), Order1: =xlAscending, Header: =xlGuess, OrderCustom: =1, MatchCase: =False, Orientation: =xlTopToBottom Else 'по убыванию Selection.Sort Key1: =Range(KeySort), Order1: =xlDescending, Header: =xlGuess, OrderCustom: =1, MatchCase: =False, Orientation: =xlTopToBottom End If Range(«A2»).Select 'установка активной ячейки с первой фамилией CommandButton2.CaptioN= «Закрыть» 'изменение названия второй кнопки End Sub Вторая кнопка закрывает форму и возвращает свое исходное имя. Private Sub CommandButton2_Click() CommandButton2.CaptioN= «Отмена» UserForm2.Hide End Sub Для инициализации формы UserForm2 откройте Модуль1 и вставьте процедуру инициализации формы. Public Sub UserForm2_Initialize() ' обратите внимание, что процедура глобальная! UserForm2.ComboBox1.List = Array(«фамилии», «продолжительности тура») UserForm2.ComboBox1.ListIndex = 0 UserForm2.Show End Sub Рис. 114. Вывод данных на лист excel
|