AlternaCaps é o nome de uma função que faz esse trabalho. Se você não tem essa função no formulário ou em um módulo, não vai funcionar. Veja um exemplo dessa função. Cole em um módulo novo e salve como um nome qualquer:
Option Compare Database
Public Function AlternaCaps(varNome As Variant) As String
Dim intInício As Integer ' Indica onde começar a pesquisar
Dim intProxEspaço As Integer ' Define o início da próxima palavra
Dim intComprimento As Integer ' Define o comprimento da palavra
Dim fPodeSair As Integer ' Define o fim da rotina
Dim strProxNome As String ' Define a próxima palavra
Dim strNome As String
'Se nenhum valor foi passado sai
If IsNull(varNome) Then Exit Function
' Retire os espaços extras e transforme tudo para minúsculas
strNome = CStr(LCase(Trim(varNome)))
' Define a posição da primeira pesquisa
intInício = 1
Do
' Encontre o primeiro espaço no nome
intProxEspaço = InStr(intInício, strNome, Chr$(32))
If intProxEspaço Then
' Se encontrou um espaço, existe uma outra palavra
' então, defina o tamanho da palavra
intComprimento = intProxEspaço - intInício
Else
' Senão, a palavra não tem espaços
intComprimento = Len(strNome) - intInício + 1
'Não há mais espaços, a palavra vai até o fim da String
' E a rotina pode acabar com
fPodeSair = True
End If
If intComprimento Then
' Extrai a próxima palavra e a transforma em minúsculas
strProxNome = Mid(strNome, intInício, intComprimento)
' Verifica se a palavra é uma preposição
Call TestaNome(strProxNome)
' Substitui a palavra corrigida na string original
Mid(strNome, intInício, intComprimento) = strProxNome
intInício = intProxEspaço + 1
Else
strNome = Left(strNome, intInício - 1) + Mid(strNome, intInício + 1, Len(strNome))
intInício = intProxEspaço
End If
' E redefine onde começar a procurar pelo próximo espaço
Loop Until fPodeSair ' Testa se pode sair do loop
' E devolve o texto já transformado
AlternaCaps = strNome
End Function
' ***************************************************
Private Sub TestaNome(strProxNome As String)
strProxNome = Trim(strProxNome)
If Len(strProxNome) Then
Select Case strProxNome
' Se a palavra for uma preposição, não faz nada
Case Is = "e", "da", "das", "de", "do", "dos"
Case Else
' Senão, coloca a primeira letra em maiúsculas
Mid(strProxNome, 1, 1) = UCase(Mid(strProxNome, 1, 1))
End Select
End If
End Sub