к оглавлению   к 4GL - визуальному программированию

Язык визуального программирования приложений Visual Basic for Applications

Кнопка VBA

Элемент управления СommandButton (кнопка) создается с помощью кнопки Кнопка (CommandButton) (рис. 7.11). Элемент управления CommandButton в основном используется для инициирования выполнения некоторых действий, вызываемых нажатием кнопки, например запуск программы или остановка ее выполнения, печать результатов и т. д.

Рис. 7.11. Кнопка в форме

Приведем наиболее часто используемые свойства элемента управления CommandButton.

Caption

Возвращает текст, отображаемый на кнопке

Cancel

Допустимые значения: True (устанавливаются отменяющие функции для кнопки, т. е. нажатие клавиши <Esc> приводит к тем же результатам, что и нажатие кнопки) и False (в противном случае)

Visible

Допустимые значения: True (кнопка отображается во время выполнения программы) и False (в противном случае)

Enabled

Допустимые значения: True (запрещено нажатие кнопки пользователем) и False (в противном случае)

Accelerator

Назначает клавишу, при нажатии на которую одновременно с клавишей <Alt> происходит запуск действий, связанных с кнопкой. Например,

CommandButtonl .Accelerator = "С"

Picture

Внедряет на поверхность кнопки картинку. Например,

CommandButtonl . Picture = LoadPicture ("с: \my doc\Kpyг.bmp") Функция LoadPicture (ПолноеИмяФайла) Считывает графическое изображение. Аргумент ПолноеИмяФайла указывает полное имя графического файла

Default

Задает кнопку по умолчанию, т. е. устанавливает ту кнопку, для которой действия, связанные с ней, будут выполняться при нажатии клавиши <Enter>

 

Список

Элемент управления ListBox (список) создается с помощью кнопки Список (ListBox) (рис. 7.12). Элемент управления ListBox применяется для хранения списка значений. Из списка пользователь может выбрать одно или несколько значений, которые в последующем будут использоваться в тексте программы.

Рис. 7.12. Список в форме

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

Listlndex

Возвращает номер текущего элемента списка. Нумерация элементов списка начинается с нуля

ListCount

Возвращает число элементов списка

Toplndex

Возвращает элемент списка с наибольшим номером

ColumnCount

Устанавливает число столбцов в списке

TextColumn

Устанавливает столбец в списке, элемент которого возвращается свойством Text

Enabled

Допустимые значения: True (запрещен выбор значения из списка пользователем) и False (в противном случае)

Text

Возвращает выбранный в списке элемент

List

Возвращает элемент списка, стоящий на пересечении указанных строки и столбца. Синтаксис:

List (row, column)

RowSource

Устанавливает диапазон, содержащий элементы списка

Control Source

Устанавливает диапазон (ячейку), куда возвращается выбранный элемент из списка

MultiSelect

Устанавливает способ выбора элементов списка. Допустимые значения: П fmMultiSelectsingle (выбор только одного элемен-та) П fmMuitiSeiectMuiti (разрешен выбор нескольких элементов посредством либо щелчка, либо нажатием клавиши <Пробел>), П fmMultiSeiectExtended (разрешено использование клавиши <Shift> при выборе ряда последовательных элементов списка)

Selected

Допустимые значения: True (если элемент списка выбран) и False (в противном случае). Используется для определения выделенного текста, когда свойство MultiSelect имеет значение fmMuitiSeiectMuiti или fmMultiSeiectExtended

ColumnWidths

Устанавливает ширину столбцов списка."

Синтаксис:

ColumnWidths = String

  • string — строка, устанавливающая ширину столбцов В следующем примере устанавливается ширина каждого из трех столбцов списка:
    With ListBoxl . ColumnCount = 3 .ColumnWidths = "20;30;30"
    End With

ColumnHeads

Допустимые значения: True (выводятся заголовки столбцов раскрывающегося списка) и False (в противном случае)

ListStyle

Допустимые значения:

  • fmListstylePlain (выбранный элемент из списка выделяется цветом)
  • fmListstyieOption (перед каждым элементом в списке располагается флажок и выбор элемента из списка соответствует установке этого флажка)

MatchEntry

Выводит первый подходящий элемент из списка при наборе его имени на клавиатуре. Допустимые значения:

  • fmMatchEntryNone (режим вывода подходящего элемента в списке отключен)
  • fmMatchEntryFirstLetter (вводит подходящий элемент по набранной первой букве. В этом случае, предпочтительно, чтобы элементы списка были бы упорядочены в алфавитном порядке)
  • fmMatchEntryComplete (вводит подходящий элемент по полному набранному имени)


BoundColumn

Устанавливает тип, возвращаемый свойством value. А именно,

  • если свойство BoundColumn равно 0, то свойство value возвращает индекс выбранной строки, т. е. в этом случае оно действует как свойство ListIndex.
  • Если свойство BoundColumn принимает значение из диапазона от 1 до количества столбцов в списке, то свойство value возвращает элемент из выбранной строки, с.тоящий в столбце, определенном свойством

    BoundColumn


Приведем наиболее часто используемые методы элемента управления ListBox

Clear

Удаляет все элементы из списка

Remove Itern

Удаляет из списка элемент с указанным номером.

Синтаксис:

Removeltem (index)

  • index — номер удаляемого из списка элемента

Add I tern

Добавляет элемент в список.

Синтаксис:

Addltem ,( [ item [, varIndex) ] )

  • Iitem — элемент (строковое выражение), добавляемый в список
  • Varlndex — номер добавляемого элемента

 

Заполнение списка

Заполнить список можно одним из следующих способов.

Поэлементно, если список состоит из одной колонки (рис. 7.13)

With ListBoxl

.Addltem "Июнь"

.Addltem "Июль"

.Addltem "Август"

.Listlndex = 0

End With

 

Рис. 7.13. Список с одной колонкой элементов

Массивом, если список состоит из одной колонки

With ListBox1

.List = Array ( "Июнь", "Июль", "Август")

.Listlndex = 1

End With

Из диапазона A1 : в4 , в который предварительно введены элементы списка. Результат выбора (индекс выбранной строки) выводится в ячейку С1.

With ListBoxl

.ColumnCount =2

.RowSource = "A1:B4"

.ControlSource = "Cl"

.BoundColumn = 0

End With

Поэлементно, если список состоит из нескольких колонок, например двух

With ListBoxl

.ColumnCount = 2

.Addltem "Июнь"

.List(0,1} = "Сессия"

.Addltem "Июль"

.List(l,1) = "Каникулы"

.Addltem "Август"

.List (2, 1) = "Каникулы"

End With

Массивом, если список состоит из нескольких колонок, например двух

Dim A (2, 1) As String

A{0, 0) = "Июнь"

A(0, 1) = "Сессия"

A(l, 0) = "Июль"

А(1, 1) = "Каникулы"

А (2, 0) = "Август"

А (2, 1) = "Каникулы"

With ListBoxl

.ColumnCount = 2

.List = A

End With

 

Выбор нескольких элементов из списка

Свойство MuitiSelect позволяет устанавливать режим, при котором допустим выбор нескольких элементов из списка. Свойство selected предоставляет возможность проверить, выбран ли элемент с указанным индексом. На рис. 7.14 показан выбор нескольких элементов из списка. Приведем пример использования этих свойств при вычислении среднего значения выбранных в списке элементов.

Рис. 7.14. Выбор нескольких элементов из списка

With ListBox1

.List = Array(1, 3, 4, 5, 6, 7, 8, 9)

.Listlndex = 0

.MuitiSeiect = fmMultiSelectMulti

Среднее = 0

n = 0

For i = 0 To .ListCount - 1

If .Selected(i) = True Then

n = n + 1

Среднее = Среднее + .List(i)

End IF

Next i

End With

Среднее = Среднее / n

Поле со списком

Элемент управления СотbоВох (поле со списком) создается с помощью кнопки Поле со списком (СотЬоВох) (рис. 7.15). Элемент управления СотЬоВох применяется для хранения списка значений. Он сочетает в себе функциональные возможности списка ListBox и поля TextBox. В отличииее от ListBox, в элементе управления СотЬоВох отображается только один элемент списка. Кроме того, у него отсутствует режим выделения нескольких элементов списка, но он позволяет вводить значение, используя поле ввода, как это делает элемент управления TextBox.

Свойства Объекта СотЬоВох, такие как Listlndex, ListCount, Enabled, List и методы clear, Removeitem и Additem аналогичны соответствующим свойствам и методам списка ListBox. Кроме того, у него есть ряд уникальных свойств.

Рис. 7.15. Поле со списком в форме

Приведем наиболее употребляемые из уникальных свойств элемента управления СотЬоВох.

DropButtonStyle

Устанавливает вид раскрывающегося списка. Допустимые значения:

  • fmDropButtonStylePlain (кнопка без символов)
  • FmDropButtonStyleArrowDisplays (кнопка со стрелкой)
  • FmDropButtonStyleEllipsis (кнопка с эллипсом)
  • FmDropButtonStyleReduce (кнопка С линией)

ListRows

Устанавливает число элементов, отображаемых в раскрывающемся списке

MatchRequired

Допустимые значения: True (в поле ввода раскрывающегося списка нельзя ввести значения, отличные от перечисленных в списке, т. е. в поле со спискам отключается функция поля ввода) и False (в противном случае)

MatchFound


Допустимые значения: True (среди элементов раскрывающегося списка имеется элемент, совпадающий с вводимым в поле ввода раскрывающегося списка) и False (в противном случае)

 

Полоса прокрутки и счетчик

Элемент управления scrollBar (полоса прокрутки) создается с помощью кнопки Полоса прокрутки (ScrollBar) (рис. 7.16).

Рис. 7.16. Полоса прокрутки и счетчик в форме

Приведем наиболее часто используемые свойства элемента управления ScrollBar.

Value

Возвращает текущее значение полосы прокрутки (только целые неотрицательные числа)

Min

Минимальное значение полосы прокрутки (только целые неотрицательные числа)

Max

Максимальное значение полосы прокрутки (только целые неотрицательные числа)

SmallChange

Устанавливает шаг изменения значения при щелчке ! по одной из стрелок полосы прокрутки

Enabled

Допустимые значения: True (пользователь может изменить значение полосы прокрутки) и False (в про- ; тивном случае)

Visible

Допустимые значения: True (полоса прокрутки отображается во время выполнения программы) и False ; (в противном случае)

Элемент управления SpinButton (счетчик) создается с помощью кнопки Счетчик (SpinButton) (рис. 7.16). Элемент управления SpinButton по своим функциональным возможностям аналогичен полосе прокрутки. Если не быть чрезмерным буквоедом, то можно сказать, что счетчик — это полоса прокрутки без ползунка. Счетчик имеет те же свойства value, Min, мах, Enabled, Visible И SmallChange, что и полоса прокрутки.

Переключатель

Элемент управления ОptionButton (переключатель) создается с помощью кнопки Переключатель (OptionButton) (рис. 7.17). Он позволяет выбрать один из нескольких взаимоисключающих параметров или действий. Переключатели обычно отображаются группами, обеспечивая возможность выбора альтернативного варианта.

Рис. 7.17. Переключатель в форме

Приведем наиболее часто используемые свойства элемента управления OptionButton.

Value

Возвращает True, если переключатель выбран и False в противном случае

Enabled

Допустимые значения: True (пользователь может выбрать переключатель) и False, (в противном случае)

Visible

Допустимые значения: True (переключатель отображается во время выполнения программы) и False (в противном случае)

Capture

Надпись, отображаемая рядом с переключателем

Рассмотрим способ использования переключателей на примере классической игры "Орел и Решка". Выбирая один из двух переключателей, игрок загадывает один из вариантов: орел (Г для компьютера) или решка (0 для компьютера). Не зная о выборе игрока, компьютер синтезирует с раиной вероятностью либо 0, либо 1, что моделирует бросание монеты. Если игрок угадал правильную сторону монеты, подброшенную компьютером, то он выигрывает. В противном случае выигрывает компьютер. Компьютер информирует игрока о результате игры. На рис. 7.18 приведено диалоговое окно, отображаемое на экране в случае проигрыша игрока.

Рис. 7.18. Диалоговое окно, отображает на экране при проигрыше игрока

Для создания приложения, моделирующего игру "Орел и Решка", с помощью пользовательской формы userForm1 создадим диалоговое окно, показанное на рис. 7.19, а в модуле UserForm1 введем следующую процедуру, синтезирующую отклик на нажатие кнопки Бросание монеты.

Рис. 7.19. Диалоговое окно игры Орел-Решка

Private Sub CommandButtonl_Click ()

' Генерация с равной вероятностью либо 0 (решка), либо 1 (орел),

' т. е. моделирование бросания монеты '

Randomize

Монета = Int(2 * Rnd)

' Сравнение результата бросания монеты компьютером ' с ситуацией, если игрок загадал "Орел"

If OptionButtonl.Value = True Then

If Монета = 0 Then MsgBox "He везет. Займись-ка лучше изучением VBA"

If Монета = 1 Then MsgBox "Везунчик. Поздравляю, ты выиграл."

End If

'

' Сравнение результата бросания монеты компьютером

' с ситуацией, если игрок загадал "Решка"

'

If OptionButton2.Value = True Then

If Монета = 1 Then MsgBox "He везет. Займись-ка лучше изучением VBA"

If Монета = 0 Then MsgBox "Везунчик. Поздравляю, ты выиграл"

End If

End Sub

Рамка

Элемент управления Frame (рамка) создается с помощью кнопки Рамка (Frame) (рис. 7.20). Он используется для визуальной группировки элементов управления. Основным свойством рамки является Capture, отображающее надпись рамки.

Флажок и выключатель

Элемент управления checkBox (флажок) создается с помощью кнопки Флажок (Checkbox) (рис. 7.21). Этот элемент управления предоставляет пользователю возможность выбора. Флажок обычно имеет два состояния: установленное и сброшенное, но может настраиваться на выбор из трех альтернатив. Флажок имеет те же свойства value, Enabled, visible и Capture, что и переключатель. Кроме того, флажок обладает уникальным свойством Triplestate, позволяющим производить выбор из трех альтернатив. Свойство Triplestate может принимать два значения: False (выбор из двух альтернатив .True и False) и True (выбор из трех альтернатив True, False и Null).

Рис. 7.20. Рамка в форме

Рис. 7.21. Флажок и выключатель в форме

Элемент управления ToggieButton (выключатель) создается с помощью кнопки Выключатель (ToggieButton) (рис. 7.21). Этот элемент управления предоставляет пользователю те же возможности, что и флажок.

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

Private Sub UserForm_Initialize()

' Выключатели

ToggleButtonl.Value = True

ToggleButton2.Value = False

ToggleButton3.TripleState = True

ToggleButton3.Value = Null

'

' Флажки

CheckBoxl.Value = True

CheckBox2.Value = False

CheckBox3.TripleState = True

CheckBox3.Value = Null

End Sub

Рис. 7.22. Три допустимых состояния выключателя и флажка

Рисунок

Элемент управления image (рисунок) создается с помощью кнопки Рисунок (Image). Он используется для отображения графических файлов в формате bmp, cur, gif, ico, jpg и wmf. Перечислим некоторые из его свойств, используемых для управления выводом изображения.

AutoSize

Допустимые значения: True (рисунок автоматически изменяет размер для того, чтобы отобразить изображение целиком) и False (в противном случае)

Picture

Задает отображаемый графический файл. Используется с функцией LoadPicture.

Синтаксис:

Picture = LoadPicture (ПолноеИмяФайла)

  • ПолноеИмяФайла — полное имя отображаемого графического файла

Pictures izeMode

Устанавливает масштабирование рисунка. Допустимые значения:

  • fmpictureSizeModeClip (не помещающиеся в границах объекта части рисунка обрезаются)
  • fmPictureSizeModeStretch (рисунок масштабируется так, чтобы он занимал всю поверхность объекта)
  • fmPictureSizeModeZoom (рисунок масштабируется с сохранением относительных размеров так, чтобы он помещался целиком внутри объекта)

PictureAlignment

Устанавливает расположение рисунка внутри объекта. Допустимые значения:

  • fmPictureAlignmentTopLeft (в верхнем левом углу)
  • fmPictureAlignmentTopRight (в Верхнем Правом углу)
  • fmPictureAlignmentCenter (в центре)
  • fmPictureAlignmentBottomLeft (в нижнем левом углу)
  • fmPictureAlignmentBottomRight (в нижнем Правом углу)


PictureTiling

Допустимые значения: True (объект покрывается мозаикой из рисунка) и False (в противном случае)

Приведем пример размещения рисунка в объекте (рис. 7.24). Во всех четырех случаях рисунок выравнивается по верхнему левому краю объекта. В первом случае изображение пропорционально масштабируется так, чтобы целиком заполнить область объекта. Во втором случае масштабирование непропорциональное, в третьем рисунок размещается произвольно, в четвертом область объекта покрывается мозаикой из рисунков.

Private Sub UserForm_Initialize() With Imagel

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureSizeMode = fmPictureSizeModeZoom

.Picture = LoadPicture("c:\Face.bmp")

End With

With Image 2

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureSizeMode = fmPictureSizeModeStretch

.Picture = LoadPicture("c:\Face.bmp") End With '

With Image2

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureSizeMode = fmPictureSizeModeStretch

.Picture = LoadPicture("c:\Face.bmp")

End With

With Image3

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureSizeMode = fmPictureSizeModeClip

.Picture = LoadPicture("c:\Face.bmp")

End With

With Image4

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureTiling = True

.Picture = LoadPicturet"c:\Face.bmp")

End With

End Sub

Рис. 7.23. Четыре примера размещения рисунка

Ссылки на ячейки и диапазоны

Элемент управления RefEdit (редактирование ссылок) создается с помощью кнопки RefEdit (рис. 7.24). Элемент управления RefEdit обычно используется для ввода ссылок на ячейки или диапазоны. Основным свойством элемента управления RefEdit является Text, возвращающее строку, введенную в поле ввода этого элемента управления.

Рис. 7.24. Элемент управления RefEdit в форме

Набор страниц

Элемент управления MultiPage (набор страниц) создается с помощью кнопки Набор страниц (MultiPage) (рис. 7.25). Этот элемент управления реализует многостраничные диалоговые окна. Заголовки страниц отображаются на вкладках. Переход от страницы к странице осуществляется выбором вкладки посредством щелчка кнопкой мыши.

Рис. 7.25. Набор страниц в форме

Создать, переименовать, удалить или переместить страницу элемента управления MultiPage можно вручную, выбрав ярлык соответствующего листа и вызвав щелчком правой кнопки мыши контекстное меню. Используя это контекстное меню, можно произвести одно из перечисленных действий.

Объект MultiPage содержит в себе семейство Pages, являющееся набором всех страниц, входящих в этот объект.

Перечислим свойства объекта MultiPage.

Value и

BoundValue

Возвращают номер активной страницы. Нумерация производится с нуля

MultiRow

Допустимые значения: True (если ярлыки не помещаются ; в одну строку, то они выводятся в несколько строк) и False (если ярлыки не помещаются в одну строку, то появляется полоса прокрутки, позволяющая переходить от страницы к странице)

Selectedltem

Возвращает выбранную страницу

Семейство Pages, содержащее все страницы, входящие в объект MultiPage, имеет единственное свойство count, возвращающее число элементов семейства. Кроме того, у семейства Pages имеются следующие методы.

Add

Создает новую страницу.

Синтаксис:

Set Object = object. Add ( [ Name [, Captitsn [, index]]])

  • Oobject — семейство Pages
  • Name — имя страницы
  • Caption — текст, отображаемый на ярлыке страницы
  • Iindex — номер страницы, нумерация страниц производится с 0

Clear

Удаляет все страницы из семейства Pages

Remove

Удаляет страницу из семейства Pages

Item

Возвращает страницу со специфицированным индексом.

Синтаксис:

Set Object = object . Item(collectionindex)

 

Набор вкладок

Элемент управления Tabstrip (набор вкладок) создается с помощью кнопки Набор вкладок (TabStrip) (рис. 7.26). Он позволяет создать несколько вкладок в диалоговом окне. Объект TabStrip содержит в себе семейство Tabs, представляющее собой набор всех вкладок. Объект Tabstrip и семейство таБз обладают теми же свойствами и методами, что и объект MuitiPage и семейство Pages .

Рис. 7.26. Набор страниц 6 форме

Дополнительные элементы управления

В VBA, кроме перечисленных стандартных элементов управления, имеется ряд дополнительных. Дополнительные элементы управления являются самостоятельными объектами, обладающие как общими для всех элементов управления свойствами и методами, так и присущими только им свойствами и методами. Для добавления дополнительных элементов управления на панель элементов необходимо:

  1. Выбрать команду Сервис, Дополнительные элементы (Tools, Additional Controls).
  2. В появившемся на экране окне Дополнительные элементы (Additional Controls) (рис. 7.27) в списке Доступные элементы (Available Controls) установить флажок напротив добавляемого элемента.
  3. Нажать кнопку ОК.

Удаление ненужного элемента управления из панели элементов почти аналогично добавлению, а именно, надо:

  1. Выбрать команду Сервис, Дополнительные элементы (Tools, Additional Controls).
  2. В появившемся на экране окне Дополнительные элементы (Additional Controls) (рис. 7.27) в списке Доступные элементы (Available Controls) снять флажок напротив удаляемого элемента.
  3. Нажать кнопку ОК.

Рис. 7.27. Диалоговое окно Дополнительные элементы

Среди дополнительных элементов управления очень полезным является элемент управления Calendar (календарь) (рис. 7.28). Этот объект представляет средство для организации удобного интерфейса по вводу дат. Элемент управления конструируется в форме с помощью кнопки Календарь (Calendar)

Рис. 7.28. Календарь в форме

Перечислим основные свойства элемента управления calendar.

Day

Возвращает выбранный день

DayFont , DayFontColor

Устанавливают шрифт и цвет шрифта для названий дней недели

DayLenght

Допустимые значения:

  • Длинный (Long) (отображаются полные названия дней)
  • Средний (Medium) (в русской версии — отображаются две буквы из названий дней, в английской -три буквы)
  • Короткий (Short) (отображается только по первой букве из названия дня)

FirstDay

Первый день недели. Допустимые значения от воскресенье (Sunday) до суббота (Saturday)

Month

Возвращает выбранный месяц

MonthLenght

Допустимые значения: длинный ( Long ) (отображаются полные названия месяца) и короткий (short) (отображаются только первые три буквы из названия месяца)

ShowDays

Допустимые значения: True (отображаются названия дней недели) и False (в противном случае)

ShowDataselected

Допустимые значения: True (отображается выбранная дата в верхней части календаря) и False (в противном случае)

Value

Возвращает выбранную дату

Year

Возвращает выбранный год

Перечислим основные методы элемента управления calendar.

NextDay, NextWeek, NextMonth и NextYear

Устанавливает следующий день, неделю, месяц и год

PreviousDay, PreviousWeek, PreviousMonth и PreviousYear

Устанавливает предыдущий день, неделю, месяц и год

Today

Устанавливает текущую дату в календаре

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

Private Sub Calendarl_Click()

Cells (1, 1).Value = Calendar1.Value

End Sub

Последовательность выбора элементов управления

Последовательность перехода от одного элемента управления к другому определяет порядок, в соответствии с которым активизируются эти элементы управления при нажатии клавиши <Таb>. Для установки последовательности перехода в пользовательской форме необходимо:

  1. Находясь в редакторе Visual Basic выбрать команду Вид, Последовательность перехода (View, Tab Order).
  2. В появившемся диалоговом окне Последовательность перехода (Tab Order) с помощью клавиш Вниз (Move Down) и Вверх (Move Up) изменить порядок выделенного элемента управления в зависимости от потребности (рис. 7.29).

Рис. 7.29. Диалоговое окно

Последовательность перехода

Другим способом задания последовательности перехода является определение свойства TabIndex элемента управления. При этом надо помнить, что начальному элементу соответствует значение свойства Tabindex, равное 0, второму — 1, третьему — 2 и т. д.

Инициализация и отображение диалогового окна

Инициализировать и отобразить диалоговое окно на экране очень просто. Инициализация производится при помощи процедуры обработки события Initilize формы userForm. Отображение диалогового окна на экране осуществляется методом show. Инструкцию с методом show обычно помещают в процедуру, которая связана с командой пользовательского меню, кнопкой панели инструментов или элементом управления, как правило кнопкой диалогового окна.

Простой инициализации или обычного отображения диалогового окна часто бывает недостаточно, т. к. это приводит к появлению на экране функционально ненастроенного диалогового окна. Такое диалоговое окно можно сравнить с каркасом дома. В таком доме жить неприятно и в него совсем не хочется въезжать. Для того чтобы жить в доме было приятно и удобно, прежде чем в него вселяться, надо сделать много отделочных работ. Также и при инициализации диалогового окна необходимо предусмотреть огромное количество на первый взгляд мелочей, но без которых работать с диалоговым окном неудобно. В частности, при отображении диалогового окна на-экране необходимо установить значения полей, применяемые по умолчанию, задать функции кнопок, назначить им комбинации клавиш, связать с элементами управления всплывающие подсказки, вывести в списках первоначально выводимые элементы списщв, задать первоначальную установку флажков, переключателей, вывести в элементы управления формы требуемые рисунки и т. д.

Приведем пример процедуры инициализации диалогового окна (рис. 7.30), в котором рассчитываются размеры периодических выплат при постоянной процентной ставке.

Рис. 7.30. Диалоговое окно Периодических выплат

Private Sub UserForeinitialize ()

' Процедура инициализации и активизации диалогового окна

'

'

' Первоначальный выбор переключателя Гистограмма

'

OptionButtonl. Value = True

' Назначение клавише <Enter> функции кнопки Вычислить

With CommandButtonl

.Default = True

.ControlTipText = "Вычисление процентных ставок" & Chr(13) &

"составление отчета на рабочем листе" End With

CommandButton2.ControlTipText = "Кнопка отмены"

'

'

On Error GoTo СообщениеО With Imagel

'

' Установка такого же цвета границы элемента управления Рисунок,

' как и его фон

.BorderColor = .BackColor

'

'

' Загрузка рисунка, соответствующего переключателю Гистограмма '

.Picture = LoadPicture("VBA3_F1.BMP")

End With

'

UserForml.Show

Exit Sub

'

' В случае отсутствия файла с рисунком отображается сообщение

'

Сообщение0:

If Err.Number Then

MsgBox "Нет графического файла VBA3_F1.BMP." & Chr(13) &

"Работаем без картинки", vbCritical, "Выплаты"

End If

'

Resume Next

End Sub

Закрытие диалогового окна

В VBA диалоговые окна работают в режиме модального диалога. Это означает, что пользователь, прежде чем перейти к выполнению действий, не связанных с текущим активным диалоговым окном, должен его закрыть. Закрытие диалогового окна производится методом Hide. Следующая процедура является примером процедуры закрытия диалогового окна. Эта процедура активизируется при нажатии кнопки CommandButton2 диалогового окна UserForm1 и выполняет только одну инструкцию, осуществляющую закрытие этого диалогового окна.

Private Sub CommandButton2_Click() '

' Процедура закрытия диалогового окна '

UserForm1.Hide

End Sub

Закрыть диалоговое окно также, конечно, можно, нажав системную кнопку, расположенную в правом верхнем углу любого диалогового окна. Если при закрытии диалогового окна необходимо произвести какие-то действия, например считать информацию из окна в файл на диске и т. д., во избежание потери информации, действия, производимые программой при закрытии окна, разумно также продублировать в процедуре обработки события Terminate (закрытие) пользовательской формы.

Отображение встроенных диалоговых окон

VBA позволяет отображать программно на экране встроенные диалоговые окна в Excel наряду с пользовательскими диалоговыми окнами. Все встроенные диалоговые окна в Excel образуют семейство Dialogs, индекс которого специфицирует активизируемое диалоговое окно. Отображение встроенного диалогового окна на экране осуществляется методом show. Например, следующая процедура при нажатии кнопки активизирует диалоговое окно Открытие документа (Open) (рис. 7.31).

Private Sub CommandButtonl_Click()

Application.Dialogs(xlDialogOpen).Show

End Sub

Рис. 7.31. Диалоговое окно Открытие документа

В методе show можно указывать аргументы, управляющие выводом в диалоговом окне специфицированной информации.

XlDialogFindFile

Диалоговое окно Открытие документа (Open) при поиске файла

xlDialogPivotTableWizard

Диалоговое окно Мастер сводных таблиц (Pivot Table Wizard)

xlDialogSaveAs

Диалоговое окно Сохранить как (Save as)

xlDialogSaveWorkbook

Диалоговое окно Сохранить (Save)

xlDialogPrint

Диалоговое окно Печать (Print)

к оглавлению   к 4GL - визуальному программированию

Знаете ли Вы, что такое мысленный эксперимент, gedanken experiment?
Это несуществующая практика, потусторонний опыт, воображение того, чего нет на самом деле. Мысленные эксперименты подобны снам наяву. Они рождают чудовищ. В отличие от физического эксперимента, который является опытной проверкой гипотез, "мысленный эксперимент" фокуснически подменяет экспериментальную проверку желаемыми, не проверенными на практике выводами, манипулируя логикообразными построениями, реально нарушающими саму логику путем использования недоказанных посылок в качестве доказанных, то есть путем подмены. Таким образом, основной задачей заявителей "мысленных экспериментов" является обман слушателя или читателя путем замены настоящего физического эксперимента его "куклой" - фиктивными рассуждениями под честное слово без самой физической проверки.
Заполнение физики воображаемыми, "мысленными экспериментами" привело к возникновению абсурдной сюрреалистической, спутанно-запутанной картины мира. Настоящий исследователь должен отличать такие "фантики" от настоящих ценностей.

Релятивисты и позитивисты утверждают, что "мысленный эксперимент" весьма полезный интрумент для проверки теорий (также возникающих в нашем уме) на непротиворечивость. В этом они обманывают людей, так как любая проверка может осуществляться только независимым от объекта проверки источником. Сам заявитель гипотезы не может быть проверкой своего же заявления, так как причина самого этого заявления есть отсутствие видимых для заявителя противоречий в заявлении.

Это мы видим на примере СТО и ОТО, превратившихся в своеобразный вид религии, управляющей наукой и общественным мнением. Никакое количество фактов, противоречащих им, не может преодолеть формулу Эйнштейна: "Если факт не соответствует теории - измените факт" (В другом варианте " - Факт не соответствует теории? - Тем хуже для факта").

Максимально, на что может претендовать "мысленный эксперимент" - это только на внутреннюю непротиворечивость гипотезы в рамках собственной, часто отнюдь не истинной логики заявителя. Соответсвие практике это не проверяет. Настоящая проверка может состояться только в действительном физическом эксперименте.

Эксперимент на то и эксперимент, что он есть не изощрение мысли, а проверка мысли. Непротиворечивая внутри себя мысль не может сама себя проверить. Это доказано Куртом Гёделем.

Понятие "мысленный эксперимент" придумано специально спекулянтами - релятивистами для шулерской подмены реальной проверки мысли на практике (эксперимента) своим "честным словом". Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution