Собственно Excel VBA с исключениями

#vba #excel

#vba #excel

Вопрос:

Я использую этот код для преобразования имен в правильный регистр с исключениями «von», «af», «de». Но это не работает, поскольку имена часто «von Erik» или «af John», а не просто «von» или «af». Как я могу заставить Excel получить это?

 Sub ProperCase()

    Dim rng As Range

    'Use special cells so as not to overwrite formula.
    For Each rng In Selection.SpecialCells(xlCellTypeConstants, xlTextValues).Cells
        Select Case rng.Value
            Case "von", "af", "de"
                rng.Value = StrConv(rng.Value, vbLowerCase)
            Case Else
                'StrConv is the VBA version of Proper.
                rng.Value = WorksheetFunction.Proper(rng.Value)
        End Select
    Next rng

End Sub
  

Ответ №1:

Вместо этого вы могли бы преобразовать всю ячейку в правильный регистр, а затем запустить функцию тройной замены, чтобы заменить любые правильные версии ваших слов:

 Sub ProperCase()

Dim rng As Range

'Use special cells so as not to overwrite formula.
For Each rng In Selection.SpecialCells(xlCellTypeConstants, xlTextValues).Cells
    rng.Value = StrConv(rng.Value, vbProperCase)
    rng.Value = Replace(Replace(Replace(rng.Value, "Von", "von"),"Af","af"), "De", "de")
Next rng

End Sub