Привет всем, я пытаюсь разделить имя пользователя, но у меня проблемы с этим.Ниже приведена моя версия, если у имени пользователя в скобках есть имя «go by»:
theName = "Gates, Bill W. (Bill)"
hasBracket = False
If InStr(theName, "(") <> 0 Then
hasBracket = True
End If
If hasBracket = True Then
bracketPos = InStr(theName, ",")
lName = StrConv(Trim(Left(theName, bracketPos - 1)), vbProperCase)
theName = Trim(Mid(theName, bracketPos + 2))
bracketPos = InStr(theName, " ")
fName = StrConv(Trim(Left(theName, bracketPos - 1)), vbProperCase)
theName = Trim(Mid(theName, bracketPos))
If Trim(Left(theName, 1)) <> "(" Then
mName = StrConv(Replace(Trim(Left(theName, 1)), ".", ""), vbProperCase)
Else
mName = ""
End If
bracketPos = InStr(theName, "(")
bName = StrConv(Replace(Replace(Trim(Mid(theName, bracketPos)), "(", ""), ")", ""), vbProperCase)
Else
...
End If
Эта часть работает нормально, если в имени пользователя есть «()».Переход к части ELSE, где "()" не используются, кажется мне сложной задачей.Проблема в том, что имя пользователя может быть отформатировано следующим образом:
Gates, Bill W.
Gates, Bill
Может быть, я просто слишком обдумываю это, но я не могу проверить, имеет ли оно второе имя или не использует код сверху дляраздел ELSE:
ELSE
bracketPos = InStr(theName, ",")
lName = StrConv(Trim(Left(theName, bracketPos - 1)), vbProperCase)
theName = Trim(Mid(theName, bracketPos + 2))
bracketPos = InStr(theName, " ")
If bracketPos <> 0 Then
fName = StrConv(Trim(Left(theName, bracketPos - 1)), vbProperCase)
End If
theName = Trim(Mid(theName, bracketPos))
If Trim(Left(theName, 1)) <> "(" Then
mName = StrConv(Replace(Trim(Left(theName, 1)), ".", ""), vbProperCase)
Else
mName = ""
End If
MsgBox lName & " " & fName & " " & mName
END IF
Приведенный выше код отлично работает, если имя пользователя «Gates, Bill W.»но не если его "Ворота, Билл".Что я могу сделать, чтобы проверить, есть ли у него отчество, потому что в настоящее время, если это не так, то я получаю сообщение об ошибке:
theName = Trim(Mid(theName, bracketPos))
Любая помощь будет отличной, спасибо!: о)
Дэвид