Sorry, I just posted this in the Access VBA category by mistake! It should be here I think since it's about VBA for Word 2003.
I want to correct the capitalizion for Surnames such as McDonald, O'Leary, etc.
I've found the following function on this forum FAQ section but I can't figure out how to make it work. I'm not very good with VBA but am slowly learning it.
Where do I put the line:
txtSurname=Propercase(txtSurname,0)
And also where do I put the main function that comes after that line?
I'm using Word 2003 and would like to select the Name that needs to be changed and have the following function correct the capitalization.
Thanks for any pointers you can give me!
Here's the code as found in this forums FAQ section:
Proper Case function to handle surnames
FAQ705-5749: Proper Case function to handle surnames
Posted: 13 Mar 05
I developed this function to correct text, such as customer names, typed into a text box on a form. Features:
-- Changes the initial letter of each word to a capital, e.g. john smith becomes John Smith
-- Optionally, changes upper case text to proper case, e.g. JOHN SMITH becomes John Smith
-- Handles 'special' surnames correctly, e.g. McDonald, O'Neill and Handley-Smith are capitalised correctly
To use this function, place it e.g. in the Lost_Focus event of a text box:
CODE
txtSurname=Propercase(txtSurname,0)
Here is the function:
CODE
Function ProperCase(strOneLine As String, intChangeType As Integer) As String
'---------------------------------------------------------------
'- This function will convert a string to Proper Case -
'- The initial letter of each word is capitalised. -
'- It will also handle special names such as O', Mc and -
'- hyphenated names -
'- if intChangeType = 1, all text is converted to proper case. -
'- e.g. 'FRED' is converted to 'Fred' -
'- if intChangeType = 0, upper case text is not converted. -
'- e.g. 'fred' becomes 'Fred', but 'FRED' remains unchanged. -
'---------------------------------------------------------------
Dim I As Integer
Dim bChangeFlag As Boolean
Dim strResult As String
'----------------------------------------------------------
'- No characters in string - nothing to do -
'----------------------------------------------------------
If Len(strOneLine) = 0 Then
ProperCase = ""
Exit Function
End If
'----------------------------------------------------------
'- Always set first letter to upper case -
'----------------------------------------------------------
strResult = UCase$(Left$(strOneLine, 1))
'----------------------------------------------------------
'- Now look at the rest of the string -
'----------------------------------------------------------
For I = 2 To Len(strOneLine)
'----------------------------------------------------------
'- If the previous letter triggered a capital, change -
'- this letter to upper case -
'----------------------------------------------------------
If bChangeFlag = True Then
strResult = strResult & UCase$(Mid$(strOneLine, I, 1))
bChangeFlag = False
'----------------------------------------------------------
'- In other cases change letter to lower case if required -
'----------------------------------------------------------
Else
If intChangeType = 1 Then
strResult = strResult & LCase$(Mid$(strOneLine, I, 1))
Else
strResult = strResult & Mid$(strOneLine, I, 1)
End If
End If
'----------------------------------------------------------
'- Set change flag if a space, apostrophe or hyphen found -
'----------------------------------------------------------
Select Case Mid$(strOneLine, I, 1)
Case " ", "'", "-"
bChangeFlag = True
Case Else
bChangeFlag = False
End Select
Next I
'----------------------------------------------------------
'- Special handling for Mc at start of a name -
'----------------------------------------------------------
If Left$(strResult, 2) = "Mc" Then
Mid$(strResult, 3, 1) = UCase$(Mid$(strResult, 3, 1))
End If
I = InStr(strResult, " Mc")
If I > 0 Then
Mid$(strResult, I + 3, 1) = UCase$(Mid$(strResult, I + 3, 1))
End If
ProperCase = strResult
End Function
I want to correct the capitalizion for Surnames such as McDonald, O'Leary, etc.
I've found the following function on this forum FAQ section but I can't figure out how to make it work. I'm not very good with VBA but am slowly learning it.
Where do I put the line:
txtSurname=Propercase(txtSurname,0)
And also where do I put the main function that comes after that line?
I'm using Word 2003 and would like to select the Name that needs to be changed and have the following function correct the capitalization.
Thanks for any pointers you can give me!
Here's the code as found in this forums FAQ section:
Proper Case function to handle surnames
FAQ705-5749: Proper Case function to handle surnames
Posted: 13 Mar 05
I developed this function to correct text, such as customer names, typed into a text box on a form. Features:
-- Changes the initial letter of each word to a capital, e.g. john smith becomes John Smith
-- Optionally, changes upper case text to proper case, e.g. JOHN SMITH becomes John Smith
-- Handles 'special' surnames correctly, e.g. McDonald, O'Neill and Handley-Smith are capitalised correctly
To use this function, place it e.g. in the Lost_Focus event of a text box:
CODE
txtSurname=Propercase(txtSurname,0)
Here is the function:
CODE
Function ProperCase(strOneLine As String, intChangeType As Integer) As String
'---------------------------------------------------------------
'- This function will convert a string to Proper Case -
'- The initial letter of each word is capitalised. -
'- It will also handle special names such as O', Mc and -
'- hyphenated names -
'- if intChangeType = 1, all text is converted to proper case. -
'- e.g. 'FRED' is converted to 'Fred' -
'- if intChangeType = 0, upper case text is not converted. -
'- e.g. 'fred' becomes 'Fred', but 'FRED' remains unchanged. -
'---------------------------------------------------------------
Dim I As Integer
Dim bChangeFlag As Boolean
Dim strResult As String
'----------------------------------------------------------
'- No characters in string - nothing to do -
'----------------------------------------------------------
If Len(strOneLine) = 0 Then
ProperCase = ""
Exit Function
End If
'----------------------------------------------------------
'- Always set first letter to upper case -
'----------------------------------------------------------
strResult = UCase$(Left$(strOneLine, 1))
'----------------------------------------------------------
'- Now look at the rest of the string -
'----------------------------------------------------------
For I = 2 To Len(strOneLine)
'----------------------------------------------------------
'- If the previous letter triggered a capital, change -
'- this letter to upper case -
'----------------------------------------------------------
If bChangeFlag = True Then
strResult = strResult & UCase$(Mid$(strOneLine, I, 1))
bChangeFlag = False
'----------------------------------------------------------
'- In other cases change letter to lower case if required -
'----------------------------------------------------------
Else
If intChangeType = 1 Then
strResult = strResult & LCase$(Mid$(strOneLine, I, 1))
Else
strResult = strResult & Mid$(strOneLine, I, 1)
End If
End If
'----------------------------------------------------------
'- Set change flag if a space, apostrophe or hyphen found -
'----------------------------------------------------------
Select Case Mid$(strOneLine, I, 1)
Case " ", "'", "-"
bChangeFlag = True
Case Else
bChangeFlag = False
End Select
Next I
'----------------------------------------------------------
'- Special handling for Mc at start of a name -
'----------------------------------------------------------
If Left$(strResult, 2) = "Mc" Then
Mid$(strResult, 3, 1) = UCase$(Mid$(strResult, 3, 1))
End If
I = InStr(strResult, " Mc")
If I > 0 Then
Mid$(strResult, I + 3, 1) = UCase$(Mid$(strResult, I + 3, 1))
End If
ProperCase = strResult
End Function