Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Список (ListBox) и поле со списком (ComboBox)




Список (ListBox)

Предположим, что нам надо создать следующую форму, с помощью которой пользователь мог указывать преподавателей кафедры:

ТРЕБУЕТСЯ: создать форму (выполните самостоятельно!) и написать программу инициализации формы, в которой:

§ Список преподавателей должен быть в 2 колонки (1-я колонка – Ф.И.О, 2-я – Должность).

§ В список заносятся только преподаватели кафедры АСУ.

§ Предусмотрена возможность выбора нескольких элементов.

§ Элементы списка формируются на основе данных, расположенных на листе Кадры в книге C:\St\Институт.xls (Рис. 10‑10):

Рис. 10‑10. Структура базы данных Кадры

Начальные условия

1) при создании формы присвойте следующие имена элементам управления:

­ кнопке ОК – cmdOK

­ кнопке Отмена – cmdОтмена

­ списку – lstСотрудник

2) саму форму назовите frmСписок_в_2_колонки.

Тогда программа инициализации формы и 2 её подпрограммы будут выглядеть, например, так:

1) Option Base 1
2) Dim flagНаличие As Integer
3) Dim flag As Integer
4) Sub Список_2_колонки()
5) Dim Преподаватели() As String
6) Dim ПреподавателиТранс () As String
7) Dim НомерСтроки As Integer
8) Dim КолСотрудников As Integer
9) On Error GoTo Ошибка
10) '1. Проверяем существование книги C:\St\Институт.xls
11) Call НаличиеКниги("C:\St\Институт.xls")
12) If flagНаличие = 0 Then Exit Sub
13) '2. Проверяем существование листа Кадры
14) Call НаличиеЛиста("Кадры")
15) If flag = 0 Then Exit Sub
16) '3. Отбираем сотрудников кафедры АСУ в массив _ Преподаватели:
17) НомерСтроки = 3
18) КолСотрудников = 0
19) While Trim(Cells(НомерСтроки, 2).Value) <> ""
20) If Trim(Cells(НомерСтроки, 1).Value) = " АСУ" Then
21) КолСотрудников = КолСотрудников + 1
22) ReDim Preserve Преподаватели(2, КолСотрудников)
23) Преподаватели(1, КолСотрудников) = _ Cells(НомерСтроки, 2).Value
24) Преподаватели(2, КолСотрудников) = _ Cells(НомерСтроки, 3).Value
25) End If
26) НомерСтроки = НомерСтроки + 1
27) Wend
28) '4. Транспонируем массив Преподаватели:
29) ReDim ПреподавателиТранс(КолСотрудников, 2)
30) For i = 1 To КолСотрудников
31) ПреподавателиТранс (i, 1) = Преподаватели(1, i)
32) ПреподавателиТранс (i, 2) = Преподаватели(2, i)
33) Next i
34) '5. Заполняем список, состоящий их 2-х колонок и _
35) выводим форму на экран:
36) With frmСписок_в_2_колонки.lstСотрудник
37) .ColumnCount = 2
38) .MultiSelect = fmMultiSelectMulti
39) .List = ПреподавателиТранс
40) End With
41) frmСписок_в_2_колонки.Show
42) Exit Sub
43) Ошибка:
44) MsgBox "Программа выполнила недопустимую операцию и _ будет закрыта!", vbCritical, "Сообщение об ошибке"
45) End Sub

 

1) Sub НаличиеКниги(ПолноеИмяФайла)
2) Dim ПолноеИмяФайла As String
3) Dim Файл As String
4) flagНаличие = 1
5) flag = 0
6) '1. Проверяем существование книги:
7) If Dir(ПолноеИмяФайла) = "" Then
8) flagНаличие = 0
9) MsgBox "Файл " & ПолноеИмяФайла & " не найден!", _ vbInformation
10) Exit Sub
11) End If
12) '2. Определяем имя книги:
13) Файл = Dir(ПолноеИмяФайла)
14) '3. Проверяем, открыта ли книга:
15) For i = 1 To Workbooks.Count
16) If Workbooks(i).Name = Файл Then
17) Workbooks(i).Activate
18) flag = 1
19) Exit For
20) End If
21) Nexti
22) If flag = 0 Then _ Workbooks.Open Filename:= ПолноеИмяФайла
23) End Sub

 

1) Sub НаличиеЛиста(Лист)
2) Dim Лист As String
3) 'Проверяем наличие листа:
4) flag = 0
5) For i = 1 To Worksheets.Count
6) If Worksheets(i).Name = Лист Then
7) flag = 1
8) Exit For
9) End If
10) Nexti
11) If flag = 1 Then
12) Sheets(Лист).Select
13) Else
14) MsgBox "Не могу сформировать список - лист " & _ Лист & " не найден!", vbExclamation, _ "Сообщение об ошибке"
15) Exit Sub
16) End If
17) End Sub

Замечания:

1. Подпрограмма НаличиеКниги проверяет, существует ли нужная нам книга.

2. Подпрограмма НаличиеЛиста проверяет, существует ли искомый лист.

3. Приведенный пример не является догмой, а руководством к действию. Вы можете написать свой код – гораздо лучший J!

Задание:

В Модуль10 наберите и протестируйте представленные выше программы.





Поделиться с друзьями:


Дата добавления: 2016-03-28; Мы поможем в написании ваших работ!; просмотров: 388 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинать всегда стоит с того, что сеет сомнения. © Борис Стругацкий
==> читать все изречения...

2300 - | 2053 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.