методичка Пол. формы (811588), страница 4
Текст из файла (страница 4)
Далее к полученному результату, в примере число восемь (см. рис. 50), добавить следующее слагаемое, например 15. Нажав, клавишу со знаком равенства получим результат- число 23, см. рис. 51.46Рис. 51473.7. Пример 7. VBA программа «Список»В данном примере показано, каким образом можно организовать ввод данных (списка) через пользовательскую форму в одномерный массив и запись этого массива в файл, с последующимсчитывании из него данных и их вывод в поле пользовательскойформы при еѐ запуске.В примере показано, как можно организовать добавление иудаление через пользовательскую форму данных (записей) в созданном ранее массиве, с возможностью его сжатия при удалении изнего данных.Задание. Создать программу под названием «Список» для ввода через пользовательскую форму списка названий студенческихгрупп, добавления названий в список и удаление названий студенческих групп из списка.
Список названий студенческих групп поместить в одномерный массив. При завершении программы массивсо списком должен быть сохранѐн в файле, а при запуске программы считан из файла обратно в массив и выведен в список пользовательской формы. При удалении данных из массива организоватьего сжатие, т.е. смещение данных с целью заполнения свободныхмест в массиве, появившихся в результате удаления в нем отдельных записей (его элементов).Создание пользовательских форми процедур, их работаПорядок создания пользовательских форм аналогичен предыдущим примерам.В данном задании должно быть создано две формы. Перваяпользовательская форма может быть выполнена в виде, представленном на рис.
52. При вводе или добавлении названия студенческой группы в поле с названием «Добавить группу» вводиться на48звание группы, например 2АС-11 и нажимается клавиша «<- Ввод». В результате этого введѐнное название группы появляется в списке с заголовком «Выбрать группу» (см. рис.
53).Рис.52Рис. 5349Из списка студенческих групп выбирается нужная группа, например 2АС-11. Для этого выделяем мышью эту группу и нажимаем клавишу « Просмотреть» в случае необходимости еѐ просмотраи – клавиша « Удалить» в случаи еѐ удаления. При удалении название группы из списка исчезает.При просмотре группы осуществляется переход во вторуюпользовательскую форму, в которой должен быть осуществлѐнввод, добавление или удаление фамилий, имѐн и отчеств (ФИО)студентов этой группы. Данная пользовательская форма создаѐтсяаналогично первой форме для ввода, добавлений и удалений наименований студенческих групп. Во второй пользовательской форме в отличие от первой вместо наименований групп будут фигурировать ФИО студентов той или иной группы.
Данную пользовательскую форму (модуль) предлагается написать самостоятельно, вкачестве тренировочного задания. Заготовка для него будет выглядеть следующим образом (см. рис.54)Рис. 5450Ниже представлен листинг процедур к пользовательскимформам для рассмотренного задания.Dim dgr As String, Gr(20) As String, _k As Integer, prm As StringPrivate Sub UserForm_Initialize()Open "D:\Grup3" For Input As #1 'Grup3-ФАЙЛ ХРАНЕНИЯ ДАННЫХ10 If EOF(1) Then GoTo 20Input #1, Gr(k)'СЧИТЫВАНИЕ ДАННЫХ ИЗ ФАЙЛАComboBox1.AddItem Gr(k)k=k+1GoTo 1020 Close #1End SubPrivate Sub CommandButton1_Click()'ДОБАВИТЬ В СПИСОКDim i As IntegerOpen "D:\Grup3" For Append As #1dgr = TextBox1.TextGr(k) = dgr'МАССИВ ДЛЯ ХРАНЕНИЯ ДАННЫХPrint #1, dgrk=k+1Close #1ComboBox1.AddItem dgrTextBox1.Text = ""End SubPrivate Sub CommandButton2_Click() 'ВЫХОДUnload MeEnd SubPrivate Sub CommandButton3_Click() 'ПРОСМОТРЕТЬ СПИСОКprm = ComboBox1.TextMsgBox "Группа -" & prm & "." & _vbLf & " Работа со списком группы.", , _" Программа список "UserForm5.Show'ПЕРЕХОД ВО ВТОРУЮ ФОРМУEnd Sub51Private Sub CommandButton4_Click() 'УДАЛЕНИЕ ИЗ СПИСКАOpen "D:\Grup3" For Output As #1dgr = ComboBox1.TextMsgBox "Группа -" & dgr & "." & _vbLf & " Будет удалена из списка.", , _" Программа: удалить"ku = k - 1For i = 0 To kuIf dgr = Gr(i) ThenN=iGr(i) = ""Exit ForEnd IfNext iFor i = N To ku - 1'СЖАТИЕ МАССИВАGr(i) = Gr(i + 1)Next iFor i = 0 To ku - 1Print #1, Gr(i)Next iClose #1k=0ComboBox1.ClearCall UserForm_InitializeEnd SubДля удобства запуска программы можно организовать еѐ запускс рабочего листа Excel.
Для этого надо на рабочем листе Excel создать кнопку, при нажатии которой происходило бы событие, связанное с запуском процедур первой пользовательской формы UserForm6. Процесс создание такой кнопки подробно рассмотрен в предыдущих примерах.
В данном случае сама кнопка и процедура кней будут выглядеть следующим образом, смотри соответственнорис. 55 и рис. 56. В процедуре сделано обращение к первой пользовательской форме, имя которой UserForm4.52Рис. 55Рис. 56534. Задания для самостоятельной работыЗадание. Для приведѐнных ниже вариантов заданий создать vbaпрограмму в виде пользовательских форм и процедур к ним, в которых реализуются указанные в вариантах действия. Вариантырасположены в порядке возрастания сложности их заданий.Предусмотреть организацию на форме кнопок для повторенияи завершения работы программы, а также кнопки запуска программы с листа Excel.При выполнении заданий использовать приведѐнные выше примеры создания аналогичных программ.Варианты заданий.1.
Организовать в программе определение количества дней оставшихся до дня вашего рождения или интересующего вас человека.Организовать ввод через форму имени пользователя, даты его рождения и вывод результата с приветствием пользователя.2. Организовать в программе определение количества дней прошедших со дня вашего рождения. Организовать ввод через формуимени пользователя, даты его рождения и вывод результата с приветствием пользователя.3. Организовать в программе определение количества дней оставшихся до студенческих каникул.
Организовать ввод через формуимени пользователя, даты начала каникул и вывод результата сприветствием пользователя.4. Организовать в программе определение количества дней прошедших со дня указанной вами даты. Организовать ввод черезформу имени пользователя, указанной даты и вывод результата сприветствием пользователя.545. Создать программу под названием «Кухонный таймер», в которой при достижении указанного в форме пользователем времениготовки блюда, в форме выдаѐтся соответствующее сообщение. Вформе указать имя повара и название приготовляемого блюда.6. Создать программу под названием «Секундомер», в которой принажатии соответствующей кнопки происходит отчет времени в секундах, а при нажатии другой кнопки в форму выдаѐтся сообщениес указание количества прошедших секунд и имени пользователяпрограммой.7.
Создать программу под названием «будильник», в которой придостижении указанного в форме пользователем времени в формевыдаѐтся надпись « подъѐм!».8. Создать программу, которая через каждые 30 секунд выдаѐт впользовательскую форму сообщение с указанием количества минутоставшихся до конца занятий. Ввод времени до конца занятий должен быть осуществлѐн через форму.9. В программе организовать ввод списка из десяти разных фамилий. Ввод фамилий организовать в процедуре, используя метод AddItem см. пример 2. В программе реализовать выбор случайным образом одной из введѐнных фамилий и вывод еѐ в форму.10.
Создать программу под названием «Жребий», в которой пользователь должен угадать, что выдаст случайным образом программа«орѐл» или « решка». Ввод стороны монеты и вывод результатовдолжны быть организованы с помощью пользовательской формы.11. Создать программу под названием «Очередь», в которой пользователь должен организовать ввод через форму пяти фамилий ивывод фамилий в том порядке, который будет определѐн в программе с помощью функции случайных чисел, т. е. случайным образом.5512. Создать программу под названием «Спортлото», в которой длязаданного через форму количества чисел от двух до шести определяются числа, лежащие в интервале от 1 до 99. Вод данных и выводрезультата должны быть организованы с помощью пользовательской формы.13.
Организовать в программе выполнение операции возведения встепень, как в целую, так и в дробную. Ввод данных и вывод результата производить через форму.14. Организовать в программе вычисление тригонометрическойфункции косинуса для задаваемого через форму угла в градусах ивывод в форму полученного результата.15.