Experience data input integrity through bad operator input. Need to force proper input to database as it is also used in reports were formatting is important.

Currently use following which works fine:

txtCity.Text = StrConv(txtCity.Text, vbProperCase) this format port elizabeth to Port Elizabeth
txtCustomerCode.Text = Format(CustomerCode.Text, "00000") this format 12 to 00012
txtemail.Text = lCase(txtemail.Text) this format [email protected] to [email protected]
txtCountryCode.Text = UCase(txtCountryCode.Text) this format gpa to GPA
txtCarrier.Text = UCase(Mid(txtCarrier.Text, 1, 1)) + LCase(Mid(txtCarrier.Text, 2)) this format GAUTENG GP to Gauteng gp

now the experts please help with

How do I get only the first character to uppercase (example above GAUTENG GP) but following uppercase to stay intact)
like how to format GAuTENG GP to Gauteng GP


South African funny names like:
Dries van Zyl John van der Merwe (van der von du) as part of the surname but stay lower case

how do I get input like:
JOHN VAN DER MERWE to convert to John van der Merwe and dries van zyl to Dries van Zyl ( van der as lower case)

How do I get input like need help. expert advise please. To Need help. Expert advise please (in other words uppercase at start of sentence and after the .)