WerlessonSampaio 20/1/2015, 17:44
Acredito que este código irá resolver o problema, porém, fiz apenas alguns testes rápidos.
Adapte-o à sua necessidade.
- Código:
Option Compare Database
Option Explicit
Private Sub Comando2_Click()
Dim s As String
Dim i As Integer
Dim strIniciais As String
Dim posicoes As Integer
For i = 1 To Len(Me!Texto0)
If Mid(Me!Texto0, i, 1) <> Chr(32) Then
s = s & Mid(Me!Texto0, i, 1)
Else
strIniciais = strIniciais & Left(UCase(s), 1)
s = ""
posicoes = testarPreposicao(i)
If posicoes > 0 Then
i = i + posicoes
End If
End If
Next
strIniciais = strIniciais & Left(UCase(s), 1)
s = ""
MsgBox strIniciais
End Sub
Public Function testarPreposicao(i) As Integer
Dim s As String
'testa preposição com duas letras
'ex: da Silva
s = Mid(Me!Texto0, i + 1, 3)
If Right(s, 1) = Chr(32) Then
testarPreposicao = 3
Exit Function
End If
'testa preposição com três letras
'ex: dos Anjos
s = Mid(Me!Texto0, i + 1, 4)
If Right(s, 1) = Chr(32) Then
testarPreposicao = 4
Exit Function
End If
End Function
Att.
Sampaio