#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