Thread: Capital Letters
View Single Post
  #12   Report Post  
Posted to microsoft.public.excel.programming
Nate Oliver[_3_] Nate Oliver[_3_] is offline
external usenet poster
 
Posts: 71
Default Capital Letters

One more revision, I mishandled an 'I':

'------------------
Function sCase(ByVal strIn As String) As String
Dim bArr() As Byte, I As Long, i2 As Long
If strIn = vbNullString Then Exit Function
Let bArr = StrConv(LCase$(strIn), vbFromUnicode)
Select Case bArr(0)
Case 97 To 122
bArr(0) = bArr(0) - 32
End Select
For I = 1 To UBound(bArr)
Select Case bArr(I)
Case 105
If Not I = UBound(bArr) Then
Select Case bArr(I + 1)
Case 32, 33, 39, 44, 46, 58, 59, 63, 148, 160
If bArr(I - 1) = 32 Then _
bArr(I) = bArr(I) - 32
End Select
ElseIf bArr(I - 1) = 32 Then _
bArr(I) = bArr(I) - 32
End If
Case 33, 46, 58, 63
For i2 = I + 1 To UBound(bArr)
Select Case bArr(i2)
Case 97 To 122
bArr(i2) = bArr(i2) - 32
I = i2: Exit For
End Select
If bArr(i2) < 32 And bArr(i2) < 33 And bArr(i2) < 46 _
And bArr(i2) < 63 Then
I = i2: Exit For
End If
Next
End Select
Next
sCase = StrConv(bArr, vbUnicode)
End Function

Sub testTime()
Debug.Print sCase("hello? erm, i'M only testing, eh. indeed, " & _
"i am inquisitve.")
Debug.Print sCase$("how old?! 22 Years.")
Debug.Print sCase$("how old?! twenty-two Years.")
Debug.Print sCase$("hmmmm.... wOrking?!?! sam i am. yes-no? " & _
"isn't i'm isn't.")
Debug.Print sCase("THE DAY WAS SUNNY AND I WORE A HAT.PETER WAS THERE")
Debug.Print sCase("no WorRies, i'm ONLY testIng! yes-no?")
Debug.Print sCase("mY fRiend & i")
Debug.Print sCase("iiiiiiiiiiiiii")
Debug.Print sCase("****T. toast %T i @")
Debug.Print sCase(" sentences.")
End Sub
'------------------

Regards,
Nate Oliver