VBA, MS Access MS Access в примерах

Преобразование длинного ФИО в краткий формат ("Пушкин А.С.")

Public Function FIOShort(vFIO As Variant) As Variant
'es 03.06.2019
'Преобразование длинного ФИО в краткий формат ("Пушкин А.С.")
'--------------------------------------------------------------------------
'?FIOShort("Пушкин Александр Сергеевич")
'--------------------------------------------------------------------------
Dim s As String
Dim sFam$, sImia$, sOth$
Dim i%, x%
On Error GoTo FIOShort_Err
    s = CStr(vFIO)
    s = Trim(Replace(s, "  ", " "))
    x = Len(s)
    i = InStr(1, s, " ")
    
    If i > 1 Then
        FIOShort = Mid(s, 1, i - 1)
    Else
        FIOShort = s
        Exit Function
    End If
   
    sImia = UCase(Mid(s, i + 1, 1)) & "."
    FIOShort = FIOShort & " " & sImia
    
    i = InStr(i + 2, s, " ")
    If i > 0 Then
        sOth = UCase(Mid(s, i + 1, 1)) & "."
        FIOShort = FIOShort & sOth
    End If


FIOShort_End:
    On Error Resume Next
    Err.Clear
    Exit Function

FIOShort_Err:
    'MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in Function: FIOShort in module: modTools", vbCritical, "Error in Application"
    Err.Clear
    Resume FIOShort_End
End Function


Выражение на эту же тему:

=IIf(InStr(InStr([ФИО];" ")+1;[ФИО];" ")>0;Mid([ФИО];1;InStr([ФИО];" ")-1) & (" "+Mid([ФИО];InStr([ФИО];" ")+1;1)+".") & (" "+Mid([ФИО];InStrRev([ФИО];" ")+1;1)+".");Mid([ФИО];1;InStr([ФИО];" ")-1) & (" "+Mid([ФИО];InStr([ФИО];" ")+1;1)+"."))

Назад ToTop
L.E. 03.04.2021
Рейтинг@Mail.ru