Основы офисного программирования и язык 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 'Внутренняя функция: возвращает в верхнем регистре 'последнюю букву слова W ПоследняяБуква = UCase(Right(W, 1)) End Function

Public Property Get ВашеИмя() As String ВашеИмя = Имя End Property

Public Property Let ВашеИмя(ByVal vNewValue As String) Имя = vNewValue End Property Public Property Get ВашеОтчество() As String ВашеОтчество = Отчество End Property

Public Property Let ВашеОтчество(ByVal vNewValue As String) Отчество = vNewValue End Property

Public Property Get ВашаФамилия() As String ВашаФамилия = Фамилия End Property

Public Property Let ВашаФамилия(ByVal NewValue As String) Фамилия = NewValue End Property

Public Property Get ВашаДатаРождения() As Date ВашаДатаРождения = ДатаРождения End Property

Public Property Let ВашаДатаРождения(ByVal NewValue As Date) ДатаРождения = NewValue End Property

Private Sub Class_Initialize() Имя = "Адам" Фамилия = "Человек" ДатаРождения = #1/1/100# End Sub

Пример 4.1.

Закрыть окно






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