Основы офисного программирования и язык VBA


Пример 4.1


Option Explicit

'Класс Личность

'Свойства класса: имя, отчество, фамилию, дату рождения

'закроем от прямого доступа,

'получить и изменить их можно только через методы класса

Private Имя As String

Private Отчество As String

Private Фамилия As String

Private ДатаРождения As Date

Public Sub InitPerson(ByVal FN As String, ByVal LN As String, _

ByVal DoB As Date)

'Инициализация личности

Имя = FN

Фамилия = LN

ДатаРождения = DoB

End Sub

Public Sub PrintPerson()

'Печать в отладочном окне Immediate

Dim S As String

If WhoIs Then S = "родилась" Else S = "родился"

Debug.Print Имя, Отчество, Фамилия, S, ДатаРождения

End Sub

Public Sub CopyPerson(You As Личность)

Имя = You.ВашеИмя

Фамилия = You.ВашаФамилия

ДатаРождения = You.ВашаДатаРождения

End Sub

Public Function WhoIs() As Boolean

'Пытается определить пол личности, анализируя имя и фамилию

'Возвращает True, если думает, что имеет дело с женщиной.

Dim F1 As Boolean, F2 As Boolean

F1 = ПоследняяБуква(Имя) = "А" Or ПоследняяБуква(Имя) = "Я"

F2 = ПоследняяБуква(Фамилия) = "А" Or ПоследняяБуква(Фамилия) = "Я"

If F1 And F2 Then

'можно полагать, что наша Личность - женщина

WhoIs = True

ElseIf Not F1 And Not F2 Then

WhoIs = False

Else 'Есть сомнения

If Отчество = "" Then

Отчество = InputBox(Имя & " " & Фамилия _

& "! " & "Назовите отчество, пожалуйста.")

End If

WhoIs = ПоследняяБуква(Отчество) = "А"

End If

End Function

Public Sub SayWhoIs()

' Вывод сообщения о поле и возрасте личности

If WhoIs Then

MsgBox ("Думаю," & Имя & _

", Вы из прекрасной половины человечества!")

ElseIf Year(ДатаРождения) > 1967 Then

MsgBox ("Думаю, " & Имя & ", Вы - молодой человек!")

Else

MsgBox ("Думаю, " & Фамилия & ", - мужчина!")

End If

End Sub

Private Function ПоследняяБуква(ByVal W As String) As String




Начало  Назад  Вперед



Книжный магазин