MyTetra Share
Делитесь знаниями!
ФИО по Имени, Фамилии и Отчеству
16.03.2019
23:43
Раздел: !Закладки - VBA - Access - msa.polarcom.ru - 13 Преобразование Строк

ФИО по Имени, Фамилии и Отчеству

Public Function GetFIO(vFamilia As Variant, vImja As Variant, vOtchestvo As Variant) As Variant

'es 17.04.2018

'Возвращает ФИО (Или ничего) по аргументам:

' vFamilia = Фамилия

' vImja = Имя

' vOtchestvo = Отчество

'--------------------------------------------------------------------------

On Error GoTo GetFIO_Err

If Len(vFamilia & "") > 0 Then 'Фамилия указана

GetFIO = vFamilia & " "

Else

Exit Function 'Фамилии нет - на выход!

End If


If Len(vImja & "") > 0 Then 'Имя указано

GetFIO = GetFIO & " " & UCase(Mid(vImja, 1, 1)) & "."

Else

Exit Function

End If


If Len(vOtchestvo & "") > 0 Then 'Отчество указано

GetFIO = GetFIO & UCase(Mid(vOtchestvo, 1, 1)) & "."

End If


GetFIO_Bye:

Exit Function


GetFIO_Err:

Err.Clear

Resume GetFIO_Bye

End Function





Более сложный вариант:

Public Function GetFIO(vFamilia As Variant, vImja As Variant, vOtchestvo As Variant, _

Optional bInLongFormat As Boolean) As Variant

'es 19.04.2018

'Возвращает ФИО (Или ничего) по аргументам:

' vFamilia = Фамилия

' vImja = Имя

' vOtchestvo = Отчество

' bInLongFormat = Краткий или длинный формат = По умолчанию краткий

' Краткий формат = Пушкин А.С.

' Длинный формат = Пушкин Александр Сергеевич

'--------------------------------------------------------------------------

On Error GoTo GetFIO_Err

If Len(vFamilia & "") > 1 Then 'Фамилия указана

'Простое составление с нормализацией строки

GetFIO = UCase(Mid(vFamilia, 1, 1)) & LCase(Mid(vFamilia, 2))

Else

If bInLongFormat = False Then Exit Function 'Фамилии нет и формат краткий- на выход!

End If


If Len(vImja & "") > 1 Then 'Имя указано

If bInLongFormat = False Then

GetFIO = GetFIO & " " & UCase(Mid(vImja, 1, 1)) & "."

Else

'Простое составление с нормализацией строки

GetFIO = GetFIO & " " & UCase(Mid(vImja, 1, 1)) & LCase(Mid(vImja, 2))

End If

Else

If bInLongFormat = False Then Exit Function

End If


If Len(vOtchestvo & "") > 1 Then 'Отчество указано

If bInLongFormat = False Then

GetFIO = GetFIO & UCase(Mid(vOtchestvo, 1, 1)) & "."

Else

'Простое составление с нормализацией строки

GetFIO = GetFIO & " " & UCase(Mid(vOtchestvo, 1, 1)) & LCase(Mid(vOtchestvo, 2))


End If

End If


GetFIO_Bye:

Exit Function


GetFIO_Err:

Err.Clear

Resume GetFIO_Bye

End Function



Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования