ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.03.2025

Просмотров: 138

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
    1. События управляющих элементов

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

  1. Примеры разработки пользовательских форм

    1. Поиск в диапазоне ячейки с заданным значением

'Процедура обработки события «нажатие на кнопку»

Private Sub ButtonFind_Click()

Dim userRange As Range, cell As Range

DimvalueAsString

'Проверка и определение диапазона

On Error Resume Next

Set userRange = Range(RefEditRange.Text)

If Err.Number <> 0 Then

MsgBox "Неправильный диапазон"

RefEditRange.SetFocus

Exit Sub

End If

On Error GoTo 0

'Проверка и задание искомого значения

IfTextBoxValue.value= ""Then

MsgBox"Введите искомое значение"

TextBoxValue.SetFocus

Exit Sub

Else

value = TextBoxValue.value

End If

'Поиск

For Each cell In userRange

If cell.value = value Then

cell.Select

MsgBox "Найдена ячейка " & cell.Address(False, False)

Exit Sub

End If

Next cell

MsgBox"Ячейка не найдена"

EndSub

'Процедура обработки события «инициализация пользовательской формы»

Private Sub UserForm_Initialize()

RefEditRange.Text = ActiveWindow.RangeSelection.Address

End Sub

    1. Поиск в диапазоне ячейки с заданным значением с учётом регистра

'Процедура обработки события «нажатие на кнопку»

Private Sub ButtonFind_Click()

Dim userRange As Range, cell As Range

Dim value As String, matchCase As Boolean

'Проверка и определение диапазона

...

'Проверка и задание искомого значения

...

'Учитывать регистр?

matchCase=CheckBoxCase.value

'Поиск

For Each cell In userRange

If matchCase And cell.value = value Or _ Not matchCase And LCase(cell.value) = LCase(value) Then

cell.Select

MsgBox "Найдена ячейка " & cell.Address(False, False)

Exit Sub

End If

Next cell

MsgBox"Ячейка не найдена"

EndSub

    1. Добавление нового сотрудника


Private Sub OptionButtonStaff_Click()

ComboBoxPost.value = ""

ComboBoxPost.RowSource = "Лист4!B1:B5"

End Sub

Private Sub OptionButtonTeachers_Click()

ComboBoxPost.value = ""

ComboBoxPost.RowSource = "Лист4!A1:A4"

End Sub

Private Sub TextBoxSurname_Change()

If TextBoxSurname.value <> "" And TextBoxName.value <> "" And _ TextBoxFatherName.value <> "" Then

ButtonAdd.Enabled = True

Else

ButtonAdd.Enabled = False

End If

End Sub

  1. Использование управляющих элементов на рабочем листе

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

  • В ячейке, связанной с кнопкой-флажком, отображается значение истинаилиложь.

  • В ячейке, связанной с группой кнопок-переключателей, отображается номер выбранного переключателя.

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


  1. Стандартные диалоговые окна

    1. Функция vba InputBox

Функция VBA InputBoxзапрашивает у пользователя одно значение. Она всегда возвращает строку, поэтому при необходимости нужно преобразовывать введённую строку в значение нужного типа. ФункцияInputBoxимеет следующий синтаксис:

InputBox(Prompt [, Title] [, Default] [, xpos] [, ypos] [, Helpfile, Context])

Функция имеет один обязательный параметр Prompt– запрос, отображаемый в окне ввода. Также можно указать заголовок окна (Title), значение по умолчанию, вставляемое в поле ввода (Default), позицию окна на экране (xpos,ypos) и раздел справочной системы (Helpfile,Context). Окно ввода имеет две кнопки –ОКиОтмена. При нажатии кнопкиОтменафункция возвращает пустую строку.

Dim str As String

str = InputBox("Введите строку")

Для ввода значений не строкового, а другого типа необходимо использовать функции преобразования – CBool,CByte,CCur,CDate,CDbl,CInt,CLng,CSng,CStr,CVar.

Dim n As Integer, str As String

On Error Resume Next

n = CInt(InputBox("Введите n:", "Ввод", 5))

If Err.Number <> 0 Then Exit Sub

...

On Error GoTo 0

    1. Метод InputBox объектаApplication

Метод InputBoxобъектаApplicationимеет три преимущества по сравнению с функциейInputBox:

  • возможность задать тип возвращаемого значения;

  • возможность указать диапазон рабочего листа;

  • автоматическая проверка правильности введённых данных.

Метод InputBoxимеет следующий синтаксис:

InputBox(Prompt [, Title] [, Default] [, Left] [, Top] [, Helpfile, Context] [, Type])

Метод InputBoxимеет те же параметры, что и функцияInputBox, и один дополнительный параметрType, который указывает, данные какого типа должен возвращать метод. Этот параметр является необязательным, и в случае его отсутствия метод возвращает строку. Если введённое значение не соответствует требуемому типу, приложениеMicrosoftExcelвыдаёт сообщение об ошибке и позволяет пользователю ввести другое значение.

Код

Тип возвращаемого значения

0

Формула

1

Число

2

Строка

4

Логическое значение

8

Диапазон

16

Ошибка


Range("F2").value=Application.InputBox("Введите число", "Ввод числа",Type:=1)

Range("F3").value=Application.InputBox("Введите строку", "Ввод строки",Type:=2)

Range("F4").value=Application.InputBox("Введите логическое значение", _

"Ввод логического значения", Type:=4)

Range("F1").value=Application.InputBox("Введите формулу", "Ввод формулы",Type:=0)

Sub EraseRange()

Dim userRange As Range

On Error GoTo Canceled

Set userRange = Application.InputBox(Prompt:="Удаляемый диапазон:", _ Title:="Удаление диапазона", _ Default:=Selection.Address, Type:=8)

userRange.Clear

userRange.Select

Canceled:

End Sub

    1. Функция vba MsgBox

Функция VBA MsgBoxпредоставляет пользователю простой способ отображения сообщения. Также она возвращает реакцию пользователя на запрос. ФункцияMsgBoxимеет следующий синтаксис:

MsgBox(Prompt [, Buttons] [, Title] [, Helpfile, Context])

Параметр Buttonsопределяет, какие кнопки и значки будут отображены в окне.

Константа

Значение

Назначение

vbOKOnly

0

Отображается только кнопка ОК (по умолчанию)

vbOKCancle

1

Отображаются кнопки OK и Отмена

vbAbortRetryIgnore

2

Отображаются кнопки Прервать, Повтор и Пропустить

vbYesNoCancel

3

Отображаются кнопки Да, Нет и Отмена

vbYesNo

4

Отображаются кнопки Да и Нет

vbRetryCancel

5

Отображаются кнопки Повтор и Отмена

vbCritical

16

Отображается значок важного сообщения

vbQuestion

32

Отображается значок запроса

vbExclamation

48

Отображается значок предупреждающего сообщения

vbInformation

64

Отображается значок информационного сообщения

vbDefaultButton1

0

По умолчанию выделена первая кнопка

vbDefaultButton2

256

По умолчанию выделена вторая кнопка

vbDefaultButton3

512

По умолчанию выделена третья кнопка


Функция MsgBoxвозвращает число, соответствующее кнопке, нажатой пользователем.

Константа

Значение

Нажатая кнопка

vbOK

1

ОК

vbCancel

2

Отмена

vbAbort

3

Прервать

vbRetry

4

Повтор

vbIgnore

5

Пропустить

vbYes

6

Да

vbNo

7

Нет

MsgBox("Сообщение", vbOKOnly + vbInformation, "Заголовок")

ans = MsgBox("Сообщение", vbOKCancel + vbQuestion, "Заголовок")

...

ans = MsgBox("Сообщение", vbRetryCancel + vbCritical, "Заголовок")

...

ifMsgBox("Сообщение", vbYesNo + vbExclamation +vbDefaultButton2, _ "Заголовок") =vbYesThen

...

Else

...

End If


Смотрите также файлы