Excel VBA нечувствителен к регистру для функции - PullRequest
0 голосов
/ 02 августа 2020

Привет, у меня есть следующий код

Private Function FiltraSexo(ByVal strTexto As String) As String

strTexto = Replace(strTexto, "M", "H")
strTexto = Replace(strTexto, "F", "M")
strTexto = Replace(strTexto, "Hombre", "H")
strTexto = Replace(strTexto, "Mujer", "M")
strTexto = Replace(strTexto, "Femenino", "M")
strTexto = Replace(strTexto, "Masculino", "H")
strTexto = Replace(strTexto, "hombre", "H")
strTexto = Replace(strTexto, "mujer", "M")
strTexto = Replace(strTexto, "femenino", "M")
strTexto = Replace(strTexto, "masculino", "H")

CURPFiltraSexo = UCase(strTexto)

End Function

Это функция, которая работает для другой функции, которую пользователь может предоставить данные или выбрать их из ячейки. Итак, в основном, если пользователь вводит любое из слов в функции, он заменяет его на M или H. Но я видел, что для этой функции, если у пользователя есть опечатка, такая как HOmbre вместо Hombre, это не изменит значение или в этом случае, если пользователь не понимает, что регистр чувствителен, он не будет go и найдет его.

Мой вопрос: есть ли способ не учитывать регистр в том, что пишет пользователь?

А также, что вы порекомендуете, если пользователь наберет слово, отличное от задуманного здесь, чтобы выдать ему ошибку. Проверить почтовый ящик, верно?

1 Ответ

0 голосов
/ 02 августа 2020

Попробуйте с помощью Select утверждения

Private Function FiltraSexo(ByVal strTexto As String) As String
    Dim tmp As String
    tmp = LCase$(strTexto)
    Select Case tmp
        Case Is = "femenino"
            FiltraSexo = "M"
        Case Is = "mujer"
            FiltraSexo = "M"
        Case Is = "hombre"
            FiltraSexo = "H"
        
            ''''
        
        Case Else
            MsgBox "error"
    End Select
End Function
...