VBA - Torne maiúsculas as primeiras letras de todas as palavras (Capitalize)

Eu sei que já temos uma função específica, mas o exercício do desenvolvimento é arrebatador. Na versão do Access 97, por exemplo, pode-se utilizar:     StrConv("andré bernardes", vbProperCase)

Agora, se quiser aprenser a fazer e utilizar em qualquer aplicação do Office...

Function Captalize(X)
       ' Torna maiúscula a primeira letra de uma palavra em um campo.
       ' Use-a num evento, procedure ou após a atualização de um objeto;
       ' Por exemplo, [Last Name] = Captalize([Last Name]).
       ' Nomes como O'Brien e Wilson-Smythe serão propriamente "capitalizados",
       ' mas MacDonald será mudado para Macdonald, e van Buren para Van Buren.
       ' Note: Para que esta função funcione corretamente, você precisa especificar:
       ' Option Compare Database na declaração da sessão do módulo.

       Dim Temp$, C$, OldC$, i As Integer

       If IsNull(X) Then
              Exit Function
       Else
              Let Temp$ = CStr(LCase(X))

              '  Inicialize OldC$ com um espaço simples porque a primeira
              '  letra precisa ser aumentada, mas não as precedidas por letra.

              Let OldC$ = " "

              For i = 1 To Len(Temp$)
                     Let C$ = Mid$(Temp$, i, 1)

                     If C$ >= "a" And C$ <= "z" And (OldC$ < "a" Or OldC$ > "z") Then
                            Mid$(Temp$, i, 1) = UCase$(C$)
                     End If

                     Let OldC$ = C$
              Next i

              Let Proper = Temp$
       End If
End Function



André Luiz Bernardes
A&A - WORK, DON´T PLAY!
http://al-bernardes.sites.uol.com.br/
bernardess@gmail.com


Nenhum comentário:

Postar um comentário

diHITT - Notícias