Function TransliterateRussianToEnglish(inputText As String) As String
Dim russianChars As Variant
Dim englishChars As Variant
Dim resultText As String
Dim currentChar As String
Dim charIndex As Variant
Dim isUpperCase As Boolean
Dim i As Integer
On Error Goto ErrH
' Список русских букв
russianChars = Split("а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я", " ")
' Список английских букв, соответствующих русским
englishChars = Split("a b v g d e yo zh z i y k l m n o p r s t u f h c ch sh sh ' y ' ' yu e yu ya", " ")
resultText = ""
' Итерация по каждому символу во входной строке
For i = 1 To Len(inputText)
currentChar = Mid(inputText, i, 1)
' Поиск индекса текущего символа в списке русских букв
charIndex = Arraygetindex(russianChars, Lcase(currentChar))
' Если символ найден, добавляем соответствующий ему английский символ
If charIndex > 0 Then
'Print currentChar " --- " Cstr( englishChars(charIndex ))
' Определение регистра буквы
isUpperCase = (currentChar = Ucase(currentChar))
' Добавление английской буквы с учетом регистра
If isUpperCase Then
resultText = resultText & Ucase(englishChars(charIndex ))
Else
resultText = resultText & Lcase(englishChars(charIndex ))
End If
Else
' Если символ не найден, оставляем его без изменений
resultText = resultText & currentChar
End If
Next
TransliterateRussianToEnglish = resultText
Exit Function
ErrH:
Print "Ошибка TransliterateRussianToEnglish " & Error(Err) & " в строке " & Erl
Exit Function
End Function