Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA For Excel Часть 02.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.08 Mб
Скачать

Задание 5 (программирование связей таблиц Excel)

  1. Переименуйте первый лист книги Excel на “Сотрудники” (кликните правой клавишей мыши по названию листа, и выберете пункт в контекстном меню переименовать)

  2. Заполните лист Excel (не заполняя колонки “Пол”) и установите на него элемент управления поле со списком согласно рисунку 12.

  3. Переименуйте второй лист книги Excel на “Пол”

  4. Войдите в редактор VBA.

  5. Активизируйте модуль книги ThisWorkbook , создайте и заполните событийную процедуру в нем.

  6. Активизируйте модуль листа Excel “ Сотрудники ” и наберите в нем программу.

  7. Активизируйте модуль листа Excel “ Пол ” и наберите в нем программу.

  8. Закройте окно редактора VBA.

  9. Включите режим программы

  10. Сохраните книгу Excel и закройте ее.

  11. Вновь откройте книгу Excel и разрешите работу макросов.

  12. Используя поле со списком, заполните колонку “Пол”

  13. Перейдите на лист пол и замените букву “М” на “Муж” , а букву “Ж” на “Жен”

  14. П ерейдите на лист “Сотрудники” и удостоверьтесь в правильности связи листов.

Рис12 Листы Excel

ThisWorkbook

'Модуль ThisWorkbook

Private Sub Workbook_Open()

'загружаем список

Worksheets("Сотрудники").ComboBox1.Clear

Worksheets("Сотрудники").ComboBox1.AddItem _

Worksheets("Пол").Cells(2, 1).Text

Worksheets("Сотрудники").ComboBox1.AddItem _

Worksheets("Пол").Cells(3, 1).Text

End Sub

Лист1(Сотрудники) –

'Лист с именем "Сотрудники"

Dim Y As Long

Private Sub ComboBox1_Change()

If ComboBox1.Visible = False Or Y = 0 Or ComboBox1.Text = "" Then

Exit Sub

End If

If ComboBox1.Text = Worksheets("Пол").Cells(2, 1).Text Then

Cells(Y, 4).Value = "=Пол!$A$2"

Else

Cells(Y, 4).Value = "=Пол!$A$3"

End If

ComboBox1.Text = ""

Cells(Y, 4).Select

End Sub

Private Sub Worksheet_Activate()

ComboBox1.Visible = True

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

'устанавливаем окно со списком на текущую строку

With Target

Y = .Row

ComboBox1.Visible = False

ComboBox1.Width = 15

If .Column = 4 Then

ComboBox1.Left = Cells(Y, 4).Left - ComboBox1.Width

Else

ComboBox1.Left = Cells(Y, 4).Left

End If

ComboBox1.Top = Cells(Y, 4).Top

ComboBox1.Height = Cells(Y, 4).Height

End With

ComboBox1.Visible = True

End Sub

Лист2(Пол) –

'Лист с именем "Пол"

Private Sub Worksheet_Activate()

Worksheets("Сотрудники").ComboBox1.Visible = False

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

'загружаем список

Worksheets("Сотрудники").ComboBox1.Clear

Worksheets("Сотрудники").ComboBox1.AddItem Cells(2, 1).Text

Worksheets("Сотрудники").ComboBox1.AddItem Cells(3, 1).Text

End Sub

Задание 6 (защита служебных полей таблицы Excel)

  1. Заполните первый лист электронной таблицы согласно рисунку 13.

  2. Выделите весь лист Excel (нажать на верхний серый , пустой квадрат листа Excel, расположенный левея столбца индекса столбца A)

  3. Установить разрешение на защиту всех ячеек листа Excel. ( Меню: Формат-Ячейки-Защита-Защищаемая ячейка)

  4. Выделить ячейки начиная с В4 и кончая G4.

  5. Снять разрешение на защиту выделенных ячеек листа Excel. (Меню: Формат-Ячейки-Защита-Защищаемая ячейка)

  6. Установить защиту листа без указания пароля. (Меню: Сервис-Защита-Защитить лист)

  7. В режиме конструктора установить на лист Excel элементы управления кнопки, и, заменить на них Caption согласно рисунку 12.

  8. Перейдите в редактор VBA.

  9. Активизируйте модуль первого листа Excel на котором расположены элементы управления кнопки.

  10. Объявите глобальные переменные модуля

  11. Создайте событийные процедуры кнопок и заполните их.

  12. Закройте окно редактора VBA

  13. Включите режим программы и опробуйте ее (попробуйте изменить название полей, удалить столбцы и т.п.).

Рис 13 Лист Excel

‘модуль листа

Dim y As Long, запрет As Boolean

‘Кнопка “Добавить”

Private Sub CommandButton1_Click()

Dim i

запрет = True

Rows(4).Select

'снять зашиту листа

ActiveSheet.Unprotect

Selection.Copy

i = 4

While Cells(i - 1, 1).Text <> "*"

i = i + 1

Wend

Rows(i).Select

ActiveSheet.Paste

Application.CutCopyMode = False

Rows(i).Value = ""

Cells(i - 1, 1).Value = ""

Cells(i, 1).Value = "*"

Cells(i, 2).Select

'установить

ActiveSheet.Protect DrawingObjects:=True, _

Contents:=True, Scenarios:=True

запрет = False

End Sub

‘Кнопка Удалить

Private Sub CommandButton2_Click()

If y > 4 Or (y = 4 And Cells(y, 1).Text <> "*") Then

Rows(y).Select

'снять зашиту листа

ActiveSheet.Unprotect

If Cells(y, 1).Text = "*" Then

Cells(y - 1, 1).Value = "*"

End If

Rows(y).Delete

'установить

ActiveSheet.Protect DrawingObjects:=True, _

Contents:=True, Scenarios:=True

If y > 4 Then

Cells(y - 1, 2).Select

Else

Cells(y, 2).Select

End If

Else

MsgBox "Удалить эту запись нельзя"

Cells(4, 2).Select

End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

y = Target.Row

With Target

If .Row > 3 And Not запрет Then

CommandButton1.Visible = False

CommandButton2.Visible = False

CommandButton1.Top = Cells(.Row, 2).Top _

+ Cells(.Row, 2).Height - CommandButton1.Height

CommandButton2.Top = CommandButton1.Top

CommandButton1.Visible = True

CommandButton2.Visible = True

End If

End With

End Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]