正在使用的当前代码是在此代码下方查找O'Mac和Mc,如果它在字符串中找到它,则将其后面的第一个字母大写。 我们遇到过这样的问题,例如像Macey这样的名字也被资本化为MaCey。我正在寻找一些如何解决这个问题的帮助。我知道很可能会在Mc / Mac / O'之后检查字符串是否大于2个字符。
任何帮助都会非常感激,因为我不熟悉编码。
Pos = InStr(Trim(lName), " ")
If Pos > 0 Then
Return CapitaliseName(Trim(Left(lName, Pos))) & " " & CapitaliseName(Mid(lName, Pos + 1))
Exit Function
End If
lName = LCase(Trim(lName))
Pos = InStr(lName, "mac")
If Pos > 0 Then Len = 3
If Pos = 0 Then
Pos = InStr(lName, "mc")
Len = 2
End If
If Pos = 0 Then
Pos = InStr(lName, "o'")
Len = 2
End If
If Pos = 0 Then
CapitaliseName = StrConv(lName, VbStrConv.ProperCase)
Else
CapitaliseName = StrConv(Left(lName, Pos - 1), VbStrConv.ProperCase) &
StrConv(Mid(lName, Pos, Len), VbStrConv.ProperCase) &
StrConv(Mid(lName, Pos + Len), VbStrConv.ProperCase)
End If