Телефонный справочник

Примечаниеот редактора: в целях безопасности помещен только текстовый файл
Загрузить архив:
Файл: ref-20599.zip (165kb [zip], Скачиваний: 108) скачать

Томский межвузовский центр дистанционного образования

Томский государственный университет

систем управления и радиоэлектроники (ТУСУР)

Кафедра автоматизации обработки информации.

Курсовая работа.

по дисциплине «Компьютерная подготовка»

Выполнил:

студент ТМЦДО

гр.: з-472-27б

специальности 061000

Маркелова А.А.

5 .01.2005г

г. Абакан.

Задание.

Вариант 9

Написать программу, которая формирует базу «Телефонный справочник», содержащую следующие сведения: ФИО, адрес, телефон. Просмотр базы и обработка должна выполняться в программе Excel.

Программа должна удовлетворять следующим требованиям:

  1. Приложение выполнить с использованием языка программирования VBAдля MSExcel.
  2. При открытии книги Excel, содержащей проект, обеспечить один рабочий лист, на котором оформить рекламную заставку проекта и поместить элемент запуска проекта на исполнение.
  3. Проект должен обеспечивать следующие режимы работы:

·

·

·

· формирование статистики:

a.

b.

c.

  1. Для каждого режима работы определить кнопку запуска и пользовательскую форму.
  2. На экране разместить одну панель инструментов, обеспечивающую работу проекта. Остальные панели скрыть.
  3. Данные проекта сохранять в файле.
  4. При вводе числовых данных обеспечить обработку ошибок некорректного ввода.

Содержание TOC o "1-3" h z u

Введение. PAGEREF _Toc92628587 h 4

Структура программного комплекса. PAGEREF _Toc92628588 h 5

Состав программного комплекса. PAGEREF _Toc92628589 h 5

Иерархия объектов. PAGEREF _Toc92628590 h 5

Руководство пользователя. PAGEREF _Toc92628591 h 6

Запуск программы.. PAGEREF _Toc92628592 h 6

Чтение / запись базы данных. PAGEREF _Toc92628593 h 7

Режимы корректировки данных. PAGEREF _Toc92628594 h 7

Поиск информации. PAGEREF _Toc92628595 h 8

Режимы сортировки. PAGEREF _Toc92628596 h 8

Формирование статистики. PAGEREF _Toc92628597 h 9

Завершение работы с программой. PAGEREF _Toc92628598 h 10

Дополнение. PAGEREF _Toc92628599 h 10

Заключение. PAGEREF _Toc92628600 h 11

Список литературы.. PAGEREF _Toc92628601 h 12

Приложение. Листинг программ VBA.. PAGEREF _Toc92628602 h 13

Рабочаякнига. PAGEREF _Toc92628603 h 13

Лист1 (Старт) PAGEREF _Toc92628604 h 13

Лист2 (Базаданных) PAGEREF _Toc92628605 h 14

addRowForm.. PAGEREF _Toc92628606 h 15

delRowForm.. PAGEREF _Toc92628607 h 15

editRowForm.. PAGEREF _Toc92628608 h 16

reportForm.. PAGEREF _Toc92628609 h 17

sortForm.. PAGEREF _Toc92628610 h 18

Module1. PAGEREF _Toc92628611 h 19


Введение

Цель работы: закрепление знаний, полученных при изучении курса «Компьютерная подготовка», а также приобретение новых навыков создания завершенных программных приложений для MSExcel.

В дополнение к огромным возможностям MSExcel, входящего в состав MicrosoftOfficeквалифицированному пользователю доступен полноценный язык программирования VisualBasicforApplications (VBA), позволяющий оживить страницы электронных таблиц, превратив их в сложное Windows– приложение, осуществляющее многогранную обработку данных под управлением оператора. При этом, большинство часто используемых операций программируется заранее, что упрощает работу конечного пользователя и значительно снижает вероятность возникновения ошибки как на этапе ввода исходных данных, так и при их последующей обработке.

В настоящей работе используются наиболее часто употребляемые элементы проектирования приложений для MSExcel. В том числе: процедуры (подпрограммы и функции), модули и формы. В коде VBAприменялись различные типы данных (включая определенные пользователям описания типов), многоуровневые условные операторы и операторы циклов. Для реализации хранения информации во внешнем файле использованы встроенные функции работы с файлами (последовательный доступ).

Диалог с пользователем реализован при помощи функций ввода/вывода информации InputBoxи MsgBox, а также ряда специально созданных форм. В указанных формах применены элементы управления типа: надпись, поле, рамка, переключатель, кнопка.

Поскольку программирование на VBAпостроено на основе событийной модели, то и в данной работе обработка событий является основой для выполнения тех или иных действий, направленных на решение конкретных задач.

MSExcelимеет богатую объектную модель. При решении поставленной задачи использовались объекты следующих типов: Application, Workbook, Worksheet, Range, CommandBar, а также коллекции Workbooksи Worksheets.

Работа выполнена в среде MicrosoftExcel 2002.


Структура программного комплекса

Состав программного комплекса

Программный комплекс «Телефонный справочник» состоит из двух файлов, располагаемых в каталоге “c:tmp”:

  • "Телефонный справочник.xls" – основной файл, содержащий таблицу просмотра базы данных и инструменты, необходимые для работы с ней.
  • "phones.db" – вспомогательный текстовый файл, используемый для хранения базы данных.

Работа программы осуществляется под управлением MicrosoftExcel, входящего в состав                                                                                                                                                                                                                                         пакета MicrosoftOffice, поэтому для ее использования необходимо наличие указанного пакета на клиентском компьютере.

Иерархия объектов

Описываемое Excel-приложение в своем составе содержит:

  1. Рабочую книгу Workbook«Телефонный справочник» + программный код VBA, состоящую из двух листов:
    1. WorksheetЛист1 (Старт) + программный код VBA
    2. WorksheetЛист2 (База данных) + программный код VBA
  2. Пять форм + программный код VBA:
    1. addRowForm – для режима добавления новой записи
    2. delRowForm – для режима удаления записи
    3. editRowForm – для режима редактирования записи
    4. reportForm – для режима формирования статистики
    5. sortForm – для режима сортировки базы данных
  3. Модуль Module1, содержащий описание типа данных Recordдля одной записи об абоненте, а также функции работы (чтения/записи) с такими данными и внешним файлом.
  4. Панель инструментов “Phones”, обеспечивающую работу программы и состоящую из девяти кнопок:
    1. чтение базы данных;
    2. запись базы данных;
    3. добавление записи;
    4. корректировка записи;
    5. удаление записи;
    6. поиск;
    7. сортировка;
    8. отчет (статистика);
    9. выход из программы.

Руководство пользователя

Запуск программы

Для запуска программы необходимо в MSExcelоткрыть книгу:

“Телефонный справочник.xls”

Вы увидите один лист с рекламной надписью и двумя кнопками. Для отображения листа с базой данных нажмите на кнопку «Начать работу».

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

Чтение / запись базы данных

Поскольку вся информация хранится во внешнем файле, то для загрузки базы данных на лист Excelтаблицы необходимо на панели инструментов нажать кнопку «Открыть базу данных». При этом существующие на листе данные будут заменены информацией из внешнего файла “phones.db”.

Для сохранения результатов работы с базой данных нажмите кнопку «Сохранить базу данных» на панели инструментов. Вся текущая информация, отображаемая на листе, будет записана во внешний файл “phones.db”.

Режимы корректировки данных

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

При нажатии на любую из них, будет предложено диалоговое окно, в котором в соответствующие поля нужно занести новую (откорректировать существующую) информацию и нажать кнопку подтверждения операции.

  

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

  

Внимание. В режиме добавления/корректировки записи обязательны для заполнения поля: Фамилия, Имя, Отчество, Улица, Дом, Телефон.  Кроме того, в поле Телефон допускается ввод только числовых данных (не более 10 цифр).

Поиск информации

Для поиска нужной информации нажмите кнопку «Найти» на панели инструментов. Будет запущен стандартный механизм поиска информации по листу MSExcel.

Режимы сортировки

В программе предусмотрено три режима сортировки данных:

  • По абоненту (фамилия + имя + отчество);
  • По адресу (улица + дом + квартира);
  • По телефону.

Для выполнения сортировки достаточно нажать соответствующую кнопку на панели инструментов и выбрать один из трех предложенных режимов.

Формирование статистики

Согласно заданию программа позволяет рассчитать следующую статистику:

  • Общее количество абонентов телефонной сети;
  • Количество телефонов на указанной улице;
  • Количество телефонов в указанном доме.

Войдите в режим «Отчет», выберите требуемый отчет и, при необходимости, задайте параметры его формирования. Количество абонентов по заданным реквизитам будет посчитано и отображено в диалоговом окне.

Завершение работы с программой

Для завершения работы с программой нажмите кнопку «Выход» на панели инструментов. Лист с базой данной будет скрыт, а появится лист с рекламной заставкой. Для подтверждения выхода повторно выберите кнопку «Выход». Если «Телефонный справочник» был единственной открытой книгой, приложение MSExcelбудет полностью закрыто, в противном случае – закроется только книга с описываемой программой.

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

Дополнение

Все стандартные панели инструментов скрываются и восстанавливаются при открытии / закрытии книги «Телефонный справочник», а также при переключении между окнами. Во избежание проблем с восстановлением стандартного набора панелей инструментов не рекомендуется самостоятельно менять набор отображаемых панелей инструментов пока описываемая книга остается открыта.

При возникновении любой нестандартной ситуации следует закрыть книгу «Телефонный справочник» и выставить нужные панели через меню «Вид».


Заключение

В ходе выполнения работы были закреплены знания по работе в MSExcelи основам программирования на VBA, а также приобретены практические навыки создания завершенных программных приложений для MSExcel.

Результатом проделанной работы является приложение «Телефонный справочник», функционально выполняющее основные задачи, стоящие перед приложением такого уровня и назначения.

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


Список литературы

  1. Потахова И.В.  Компьютерная подготовка. Офисное программирование: Учебное пособие. – Томск: Томский межвузовский центр дистанционного образования, 2004. – 181с.
  2. Справочноеруководствопо MS Excel и Visual Basic for Applications: Microsoft Corp., 2001.
  3. Демидова Л.А., Пылькин А.Н. Программирование в среде VisualBasicforApplications: Практикум – М.: Горячая линия – Телеком, 2004. – 175с.

Приложение. Листинг программ VBA

Рабочаякнига

Dim oldBars(20) As Long, kol As Integer

Private Sub Workbook_Activate()
kol = 0
Dim bar As CommandBar
For Each bar In Application.CommandBars
    If bar.Visible And Not (bar.Protection = msoBarNoChangeVisible) _
       And (bar.Type = msoBarTypeNormal) And Not (bar.Name = "Phones") Then
      kol = kol + 1
      oldBars(kol) = bar.index
    End If
Next bar
For i = 1 To kol
    Application.CommandBars(oldBars(i)).Visible = False
Next

If ThisWorkbook.ActiveSheet.Name = "Базаданных" Then
   showTools
End If
End Sub

Private Sub Workbook_Deactivate()
Dim i As Integer
For i = kol To 1 Step -1
    Application.CommandBars(oldBars(i)).Visible = True
Next

hideTools
End Sub

Private Sub Workbook_Open()
ThisWorkbook.Worksheets("Старт").Visible = True         ' спрятатьстартовыйлист
ThisWorkbook.Worksheets("Старт").Activate   ' сделатьактивнымлистсБД
ThisWorkbook.Worksheets("Базаданных").Visible = False' показатьбазуданных
End Sub

Лист1 (Старт)

PrivateSub ExitButton_Click()
ExitProject
EndSub

PrivateSub StartButton_Click()
'Commandbars
ThisWorkbook.Worksheets("Базаданных").Visible = True   ' показатьбазуданных
ThisWorkbook.Worksheets("Базаданных").Activate         ' сделатьактивнымлистсБД
ThisWorkbook.Worksheets("Старт").Visible = False        ' спрятатьстартовыйлист
EndSub

Лист2 (Базаданных)

PrivateSub Worksheet_Activate()
showTools
EndSub

PrivateSub Worksheet_Deactivate()
hideTools
EndSub

Sub addRecord()
If (ActiveCell.row < 5) Or (Len(ActiveCell.EntireRow.Cells(, 1).Value) = 0) Then
   Range("A5").Activate
EndIf
ThisWorkbook.ActiveSheet.Unprotect
addRowForm.Show vbModal
ThisWorkbook.ActiveSheet.Protect
EndSub

Sub delRecord()
If (ActiveCell.row < 5) Or (Len(ActiveCell.EntireRow.Cells(, 1).Value) = 0) Then
   ExitSub
EndIf
ThisWorkbook.ActiveSheet.Unprotect
If Selection.Rows.count = 1Then
    delRowForm.Show vbModal
Else
    Dim response
    response = MsgBox("Отмеченозаписей: " + Str(Selection.Rows.count) + Chr(13) + "Удалитьвсе?", vbYesNoCancel, "Внимание!")
    If response = vbYes Then
      Selection.EntireRow.Delete
    EndIf
EndIf
ThisWorkbook.ActiveSheet.Protect
EndSub

Sub editRecord()
If (ActiveCell.row < 5) Or (Len(ActiveCell.EntireRow.Cells(, 1).Value) = 0)    Then
   ExitSub
EndIf
ThisWorkbook.ActiveSheet.Unprotect
editRowForm.Show vbModal
ThisWorkbook.ActiveSheet.Protect
EndSub

Sub sort()
ThisWorkbook.ActiveSheet.Unprotect
sortForm.Show vbModal
ThisWorkbook.ActiveSheet.Protect
EndSub

Sub report()
Dim oldCell As Range
ThisWorkbook.ActiveSheet.Unprotect
Set oldCell = ActiveCell
reportForm.Show vbModal
oldCell.Activate
ThisWorkbook.ActiveSheet.Protect
EndSub

addRowForm

PrivateSub UserForm_Activate()
FamBox.Value = ""
ImBox.Value = ""
OtBox.Value = ""
StreetBox.Value = ""
NoBox.Value = ""
FlatBox.Value = ""
PhoneBox.Value = ""

FamBox.SetFocus
EndSub

PrivateSub CancelButton_Click()
addRowForm.Hide
EndSub

PrivateSub OKButton_Click()
' проверкаинформации
Dim box As Variant, boxes As Variant

boxes = Array(FamBox, ImBox, OtBox, StreetBox, NoBox, PhoneBox)
ForEach box In boxes
IfLen(Trim(box.Value)) = 0Then
    box.SetFocus
    ExitSub
EndIf
Next box
IfLen(Trim(PhoneBox.Value)) > 10Then
MsgBox "Более 10 цифрвномеретелефона"
PhoneBox.SetFocus
Else
' заполнениезаписиизформы
Dim myRecord As Record
myRecord.Fam = FamBox.Value
myRecord.Im = ImBox.Value
myRecord.Ot = OtBox.Value
myRecord.street = StreetBox.Value
myRecord.no = NoBox.Value
myRecord.Flat = FlatBox.Value
myRecord.Phone = Val(PhoneBox.Value)
' добавлениестрокиналистиеезаполнение
ActiveCell.EntireRow.Insert
putRecord ActiveCell.EntireRow, myRecord
' скрытиеформы
addRowForm.Hide
EndIf
EndSub

PrivateSub PhoneBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If (KeyAscii < Asc("0")) Or (KeyAscii > Asc("9")) Then
   MsgBox "Допускаетсявводтолькоцифр!"
   KeyAscii.Value = 0
EndIf

EndSub

delRowForm

PrivateSub CancelButton_Click()
delRowForm.Hide
EndSub

PrivateSub OKButton_Click()
' удалениетекущейстроки
ActiveCell.EntireRow.Delete
' скрытиеформы
delRowForm.Hide
EndSub

PrivateSub UserForm_Activate()
Dim myRecord As Record
myRecord = getRecord(ActiveCell.EntireRow)

FamBox.Value = myRecord.Fam
ImBox.Value = myRecord.Im
OtBox.Value = myRecord.Ot
StreetBox.Value = myRecord.street
NoBox.Value = myRecord.no
FlatBox.Value = myRecord.Flat
PhoneBox.Value = myRecord.Phone

OKButton.SetFocus
EndSub

editRowForm

PrivateSub UserForm_Activate()
Dim myRecord As Record
myRecord = getRecord(ActiveCell.EntireRow)

FamBox.Value = myRecord.Fam
ImBox.Value = myRecord.Im
OtBox.Value = myRecord.Ot
StreetBox.Value = myRecord.street
NoBox.Value = myRecord.no
FlatBox.Value = myRecord.Flat
PhoneBox.Value = myRecord.Phone

FamBox.SetFocus
EndSub


PrivateSub CancelButton_Click()
editRowForm.Hide
EndSub

PrivateSub OKButton_Click()
' проверкаинформации
Dim box As Variant, boxes As Variant

boxes = Array(FamBox, ImBox, OtBox, StreetBox, NoBox, PhoneBox)
ForEach box In boxes
IfLen(Trim(box.Value)) = 0Then
    box.SetFocus
    ExitSub
EndIf
Next box
IfLen(Trim(PhoneBox.Value)) > 10Then
MsgBox "Более 10 цифрвномеретелефона"
PhoneBox.SetFocus
Else
' заполнениезаписиизформы
Dim myRecord As Record
myRecord.Fam = FamBox.Value
myRecord.Im = ImBox.Value
myRecord.Ot = OtBox.Value
myRecord.street = StreetBox.Value
myRecord.no = NoBox.Value
myRecord.Flat = FlatBox.Value
myRecord.Phone = Val(PhoneBox.Value)
' добавлениестрокиналистиеезаполнение
putRecord ActiveCell.EntireRow, myRecord
' скрытиеформы
editRowForm.Hide
EndIf
EndSub

PrivateSub PhoneBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If (KeyAscii < Asc("0")) Or (KeyAscii > Asc("9")) Then
   MsgBox "Допускаетсявводтолькоцифр!"
   KeyAscii.Value = 0
EndIf
EndSub

reportForm

PrivateSub UserForm_Activate()
AllOption.Value = True
OKButton.Caption = "Расчет"
OKButton.SetFocus
EndSub

PrivateSub AllOption_Click()
OKButton.Caption = "Расчет"
EndSub

PrivateSub StreetOption_Click()
OKButton.Caption = "Параметры..."
EndSub

PrivateSub HouseOption_Click()
OKButton.Caption = "Параметры..."
EndSub

PrivateSub CancelButton_Click()
reportForm.Hide
EndSub

PrivateSub OKButton_Click()
Dim myRecord As Record
Dim counter As Long
Dim street AsString, no AsString, title AsString
If AllOption.Value Then
   counter = count()
   MsgBox "Общееколичествоабонентов: " + Str(counter)
Else
myRecord = getRecord(ActiveCell.EntireRow)
If StreetOption.Value Then
   title = "Отчетпоулице"
   street = InputBox("Задайтенаименованиеулицы:", title, myRecord.street)
   IfLen(street) > 0Then
    street = Trim(street)
    counter = count(street)
    MsgBox "Количествотелефоновнаулице '" + street + "': " + Str(counter)
   EndIf
Else
   title = "Отчетподому"
   street = InputBox("Задайтенаименованиеулицы:", title, myRecord.street)
   IfLen(street) > 0Then
    street = Trim(street)
    no = InputBox("Улица '" + street + "'" + Chr(10) + "Задайтеномердома:", title, myRecord.no)
    IfLen(no) > 0Then
     no = Trim(no)
     counter = count(street, no)
     MsgBox "Количествотелефоноввдоме '" + street + " " + no + "': " + Str(counter)
    EndIf
   EndIf
EndIf
EndIf
reportForm.Hide
EndSub

PrivateFunction count(Optional street, Optional no) As Long
Dim myRecord As Record
Dim data As Range, curRow As Range
Dim doCalc As Boolean, counter As Long

counter = 0
Range("A5").Activate
Set data = ActiveCell.CurrentRegion

ForEach curRow In data.Rows
   myRecord = getRecord(curRow)
   doCalc = False

   If IsMissing(street) Then
     ' всеабоненты
     doCalc = True
   Else
    If IsMissing(no) Then
     ' поулице
     doCalc = (Trim(myRecord.street) = street)
    Else
     ' подому
     doCalc = (Trim(myRecord.street) = street) And (Trim(myRecord.no) = no)
    EndIf
   EndIf

   If doCalc Then counter = counter + 1

Next curRow
count = counter
EndFunction

sortForm

PrivateSub UserForm_Activate()
OKButton.SetFocus
EndSub

PrivateSub CancelButton_Click()
sortForm.Hide
EndSub

PrivateSub OKButton_Click()
Dim sht As Worksheet
Dim rng As Range
Set sht = ThisWorkbook.ActiveSheet
Set rng = sht.Range(sht.Cells(5, 1), sht.Cells(65536, 1).End(xlUp).Offset(, 7))

If NameOption.Value Then
    ' сортироватьпоФИО
    rng.sort Key1:=sht.Columns("A"), Order1:=xlAscending, Key2:=sht.Columns("B"), Order2:=xlAscending, Key3:=sht.Columns("C"), Order3:=xlAscending, Header:=xlNo
Else
   If AddressOption.Value Then
    ' сортироватьпоадресу
    rng.sort Key1:=sht.Columns("D"), Order1:=xlAscending, Key2:=sht.Columns("E"), Order2:=xlAscending, Key3:=sht.Columns("F"), Order3:=xlAscending, Header:=xlNo
   Else
    ' сортироватьпотелефону
    rng.sort Key1:=sht.Columns("G"), Order1:=xlAscending, Header:=xlNo
   EndIf
EndIf

sortForm.Hide
EndSub

Module1

PublicType Record
Fam AsString
Im AsString
Ot AsString
street AsString
no AsString
Flat AsString
Phone As Long
EndType

PublicFunction dbFileName() AsString
dbFileName = ThisWorkbook.Path + "phones.db"
EndFunction

Sub ToolbarExitButton()
If ThisWorkbook.ActiveSheet.Name = "Старт"Then
ExitProject
Else
ThisWorkbook.Worksheets("Старт").Visible = True         ' спрятатьстартовыйлист
ThisWorkbook.Worksheets("Старт").Activate               ' сделатьактивнымлистсБД
ThisWorkbook.Worksheets("Базаданных").Visible = False' показатьбазуданных
EndIf
EndSub

Sub ExitProject()
ThisWorkbook.Saved = True
If Application.Workbooks.count = 1Then
    Application.Quit      'завершитьработу Excel
Else
    ThisWorkbook.Close'завершитьработупроекта
EndIf
EndSub

Sub dbRead()
ThisWorkbook.ActiveSheet.Unprotect
Dim myRecord As Record
Dim data As Range, curRow As Range
Dim row As Integer
Range("A5").Activate
Set data = ActiveCell.CurrentRegion
data.ClearContents
Open dbFileName ForInputAs #1
row = 1
DoWhileNot EOF(1)
   Input #1, myRecord.Fam, myRecord.Im, myRecord.Ot, myRecord.street, myRecord.no, myRecord.Flat, myRecord.Phone
   putRecord ActiveCell.Cells(row), myRecord
   row = row + 1
Loop
Close #1
ThisWorkbook.ActiveSheet.Protect
EndSub

Sub dbWrite()
ThisWorkbook.ActiveSheet.Unprotect
Dim myRecord As Record
Dim data As Range, curRow As Range
Range("A5").Activate
Set data = ActiveCell.CurrentRegion
Open dbFileName For Output As #1
ForEach curRow In data.Rows
   myRecord = getRecord(curRow)
   Write #1, myRecord.Fam, myRecord.Im, myRecord.Ot, myRecord.street, myRecord.no, myRecord.Flat, myRecord.Phone
Next curRow
Close #1
ThisWorkbook.ActiveSheet.Protect
EndSub

Function getRecord(row As Range) As Record
Dim myRecord As Record
myRecord.Fam = row.Cells(, 1).Value
myRecord.Im = row.Cells(, 2).Value
myRecord.Ot = row.Cells(, 3).Value
myRecord.street = row.Cells(, 4).Value
myRecord.no = row.Cells(, 5).Value
myRecord.Flat = row.Cells(, 6).Value
myRecord.Phone = row.Cells(, 7).Value
getRecord = myRecord
EndFunction

Sub putRecord(row As Range, myRecord As Record)
row.Cells(, 1).Value = myRecord.Fam
row.Cells(, 2).Value = myRecord.Im
row.Cells(, 3).Value = myRecord.Ot
row.Cells(, 4).Value = myRecord.street
row.Cells(, 5).Value = myRecord.no
row.Cells(, 6).Value = myRecord.Flat
row.Cells(, 7).Value = myRecord.Phone
EndSub

Sub showTools()
Application.CommandBars("Phones").Enabled = True
Application.CommandBars("Phones").Visible = True
EndSub

Sub hideTools()
Application.CommandBars("Phones").Visible = False
Application.CommandBars("Phones").Enabled = False
EndSub