Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
формы.doc
Скачиваний:
6
Добавлен:
02.06.2015
Размер:
532.48 Кб
Скачать

Событийная процедура инициализации формы

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

Список можно создать различными способами. Разберем три способа.

Первый способ создает список, используя метод AddItem – метод добавления элемента в объект ListBox.

Private Sub UserForm_Initialize()

' заполняет список методом AddItem

Dim p As Object

lst_Sheet.Clear 'очистка списка

ForEachpInWorksheets

lst_Sheet.AddItemp.Name'добавление элемента списка

Next p

End Sub

Список очищается и для каждого рабочего листа в список добавляется элемент, значение которого определяется именем листа. В процедуре использован цикл объектного типа.

Второй способ создает список из двумерного массива.

Private Sub UserForm_Initialize()

'создать список из массива названий листов

Dim wSheets As Integer

Dim i As Integer

Dim Arr() As Variant

wSheets = Worksheets.Count

lst_Sheet.Clear

ReDim Arr(1 To wSheets, 1)

For i = 1 To wSheets

Arr(i, 0) = Worksheets(i).Name

Next i

lst_Sheet.List() = Arr()

End Sub

Массив Arr описывается как динамический массив типа Variant. Подсчитывается количество рабочих листов в книге и массив Arr переопределяется как двумерный массив с одним столбцом. Количество строк массива равно количеству рабочих листов. Нумерация строк массива начинается с единицы, а столбцов - с нуля.

В цикле элементам массива присваиваются имена рабочих листов. Последний оператор присваивает массиву элементов списка значения массива Arr. Поскольку массив Arr описан как локальная переменная, по окончании процедуры инициализации формы эта переменная теряет свое значение.

Запустив форму Act_Sheet, можно активизировать любой рабочий лист.

Рис. 7.10. Список листов рабочей книги

На рисунке показан список листов рабочей книги, созданный при запуске формы Act_Sheet. Лист диаграмм отсутствует в этом списке.

Завершение разработки приложения

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

Процедура Sel_Sheet_Click должна вызывать форму Act_Sheet и после выбора и активизации рабочего листа должна разбивать введенную в Inp_Box строку текста на слова, записывая их в ячейки активного рабочего листа.

Public Sub word_recording()

a = Trim(Inp_Box) & " "

'удаление ведущих и концевых пробелов;

'для удобства добавить пробел в конце строки

n = Len(a)

i = 1

m = 2

Do

j = InStr(i, a, " ") 'поиск очередного пробела в строке

m = m + 1

Cells(m, 1) = Mid(a, i, j - i)

If j = n Then 'достигнут конец строки

Exit Sub

Else

i = j + 1

End If

Loop

End Sub

Private Sub Sel_Sheet_Click()

Act_Sheet.Show

word_recording

End Sub

Общая процедура word_recording разбивает введенный текст на слова подобно ранее разобранной процедуре Text_Analysis, но не высвечивает полученные слова, а записывает их на активный рабочий лист в столбец A, начиная с ячейки A3.

Событийная процедура нажатия на кнопку Sel_Sheet высвечивает форму выбора рабочего листа и запускает процедуру разбивки текста и сохранения слов в ячейках рабочего листа.

Рис. 7.11. Формы приложения