Página 1 de 1
VBA - Deixar a primeira letra Maiúscula ( Com Exceções ).
Enviado: 08 Fev 2016 às 16:07
por RodrigoSilvaLima
Boa Tarde Amigos!!!
Pessoal, eu estou tentando aprender VBA criei este código para deixar todas as primeiras letras em Maiúsculo e o restante em minúsculo além de não mexer nas células que possuem fórmulas.
Testei, e está funcionando bem porém existem alguns casos que eu gostaria de condicionar.
Exemplo:
1-Roberto De Andrade ( É o que o código faz ).
2-Roberto de Andrade ( Eu gostaria que o "de" ficasse em minúsculo ).
Gostaria que o código pulasse e deixasse estas terminações em minúsculo: " do ", " dos ", " da ", " das ", " de ", " e ", " a ", " ao ", " em ", " para ".
Segue o código:
Sub Proper_Case()
For Each x In Selection
If Left(x.Formula, 1) <> "=" Then x.Value = Application.Proper(x.Value)
Next
End Sub
Por favor, me ajudem amigos!
Até mais!!
VBA - Deixar a primeira letra Maiúscula ( Com Exceções ).
Enviado: 08 Fev 2016 às 17:32
por Reinaldo
Não fica claro o que é o seu x.formula; acredito que seja uma celula.
Veja se auxilia
Código: Selecionar todosFunction sMaiusculo(Texto) As String
Dim mArray() As String
Dim sTexto As String, iBegin As Integer, iFim As Integer, sResulta As String
iBegin = 1
Texto = LCase(Texto) & " "
mArray = Split("do dos da das de e a ao em para")
Do Until InStr(iBegin, Texto, " ") = 0
iFim = InStr(iBegin, Texto, " ")
sTexto = Mid(Texto, iBegin, iFim - iBegin)
iBegin = iFim + 1
If UBound(Filter(mArray, sTexto)) = -1 Then
sTexto = UCase(Left(sTexto, 1)) & LCase(Mid(sTexto, 2))
End If
sResulta = sResulta & " " & sTexto
Loop
sMaiusculo = Trim(sResulta)
End Function
Sub Proper_Case()
For Each x In Selection
If Left(x.Formula, 1) <> "=" Then x.Value = sMaiusculo(x.Value)
Next
End Sub
Adaptação livre do postado em :
http://www.vbweb.com.br/dicas_visual.asp?Codigo=3335 ;
http://ensinandoexcel.com.br/e-excel/vb ... uscula.asp
Re: VBA - Deixar a primeira letra Maiúscula ( Com Exceções )
Enviado: 08 Fev 2016 às 20:41
por RodrigoSilvaLima
Boa Noite Reinaldo!!!
Testei aqui, mas está dando o seguinte problema:
Exemplo
Depreciação de Máquinas
O código está trazendo assim:
depreciação de Máquinas ( Ele deveria trazer Depreciação de Máquinas )
Nas outras exceções, também está fazendo a mesma coisa.
Tentei arrumar aqui, mas estou aprendendo ainda é como colocar um macaco pilotando um helicóptero vou mexer em algo e acabo estragando o código!KKK
Re: VBA - Deixar a primeira letra Maiúscula ( Com Exceções )
Enviado: 09 Fev 2016 às 00:24
por RodrigoSilvaLima
Reinaldo e amigos, estou tentando mexer nesta!
Testei, e ela converte as primeiras letras em Maiúsculas e o restante em minúsculas inclusive com as exceções!!!
Porém, quando eu executo ela mexe também nas células que possuem fórmulas as transformando em números.
Agora, o problema é colocar uma condição para o código trabalhar apenas nas células que contém textos e preservar as células que contém fórmulas.
Segue o código:
Sub Ajustar()
Dim C As Range
For Each C In Selection
C.Value = LCase(C.Value)
If UCase(C.Value) = C.Value Then
C.Value = LCase(C.Value)
ElseIf LCase(C.Value) = C.Value Then
C.Value = WorksheetFunction.Proper(C.Value)
'para o caso de nomes próprios, é necessário o tratamento abaixo:
C.Value = WorksheetFunction.Substitute(C.Value, " Do ", " do ")
C.Value = WorksheetFunction.Substitute(C.Value, " Dos ", " dos ")
C.Value = WorksheetFunction.Substitute(C.Value, " Da ", " da ")
C.Value = WorksheetFunction.Substitute(C.Value, " Das ", " das ")
C.Value = WorksheetFunction.Substitute(C.Value, " De ", " de ")
C.Value = WorksheetFunction.Substitute(C.Value, " E ", " e ")
C.Value = WorksheetFunction.Substitute(C.Value, " Ao ", " ao ")
C.Value = WorksheetFunction.Substitute(C.Value, " Em ", " em ")
C.Value = WorksheetFunction.Substitute(C.Value, " Para "," para ")
Else
C.Value = UCase(C.Value)
End If
Next C
End Sub
VBA - Deixar a primeira letra Maiúscula ( Com Exceções ).
Enviado: 09 Fev 2016 às 08:28
por Reinaldo
Bom não sei como aplicou o que propus, mas nos testes que efetuei, executou conforme se espera
VBA - Deixar a primeira letra Maiúscula ( Com Exceções ).
Enviado: 09 Fev 2016 às 11:07
por aapcabanas
Vc pode utilizar essa macro e adptar conforme sua necessiade
Function PRI_MAIUSCULO(Texto)
Dim Vpalavra, inicio, termino, Wresultado
inicio = 1
Texto = LCase(Texto) & " "
Do Until InStr(inicio, Texto, " ") = 0
termino = InStr(inicio, Texto, " ")
Vpalavra = Mid(Texto, inicio, termino - inicio)
inicio = termino + 1
If Vpalavra <> "de" And Vpalavra <> "da" And Vpalavra <> "do" And _
Vpalavra <> "das" And Vpalavra <> "dos" And Vpalavra <> "a" And _
Vpalavra <> "e" And Vpalavra <> "as" And Vpalavra <> "os" Then
Vpalavra = UCase(Left(Vpalavra, 1)) & LCase(Mid(Vpalavra, 2))
End If
Wresultado = Wresultado & " " & Vpalavra
Loop
PRI_MAIUSCULO = Trim(Wresultado)
End Function
espero que ajude....
Re: VBA - Deixar a primeira letra Maiúscula ( Com Exceções )
Enviado: 09 Fev 2016 às 11:37
por RodrigoSilvaLima
Bom dia aapcabanas!!!
Amigo, quando jogo o código no módulo e depois saio e tento executar não aparece nenhum código para executar.
Será que tem que colocar Sub () antes de Function PRI_MAIUSCULO(Texto) e no final do código End Sub??
Me desculpe a minha ignorância mas estou tentando aprender, fico mais perdido que chiclete em boca de banguelo.
Reinaldo, testei aqui e está dando o mesmo problema coloque uma célula ai DEPRECIAÇÃO DE MÁQUINAS.
Quando executar o código ele vai trazer: depreciação de Máquinas ( Ou seja, a primeira letra era para ficar Maiúscula a exceção está certa que é ficar "de" em minúsculo mesmo ).
E obrigado por estarem me ajudando, não é para qualquer um entender estes códigos.
Re: VBA - Deixar a primeira letra Maiúscula ( Com Exceções )
Enviado: 09 Fev 2016 às 11:52
por Kledison
Boa tarde,
verifica se o exemplo ajuda, utilizei o código que o Reinaldo postou.
Re: VBA - Deixar a primeira letra Maiúscula ( Com Exceções )
Enviado: 09 Fev 2016 às 12:36
por RodrigoSilvaLima
Kledison Lana, aapcabanas e Reinaldo obrigado amigos!!!
Agora funcionou tudo!!!!
O código do Reinaldo está funcionando, copiei o código novamente e agora deu certo!!
aapcabanas, creio que o seu também esteja funcionando mas como não entendo bem ainda de VBA não consegui adaptar ele.
VBA facilita muito o nosso trabalho vou me aprofundar nisso!
Obrigado amigos!!
Re: VBA - Deixar a primeira letra Maiúscula ( Com Exceções )
Enviado: 09 Fev 2016 às 16:59
por RodrigoSilvaLima
Pessoal, agora testando com mais detalhes está acontecendo outro erro:
Exemplo:
(-)DEPRECIAÇÃO DE MÁQUINAS
O código está trazendo (-)depreciação de Máquinas.
Se não colocar o (-) na frente ele traz correto Depreciação de Máquinas, e a minha planilha tem muitas contas com o (-) na frente.
Esse (-) tem que ficar na frente mesmo para efeito de entendimento, mas quando executo traz (-)depreciação de Máquinas.
Tinha que ficar (-)Depreciação de Máquinas.
Testando na planilha que o Kledison postou vocês poderão confirmar.
Alguém sabe como resolver?
VBA - Deixar a primeira letra Maiúscula ( Com Exceções ).
Enviado: 09 Fev 2016 às 17:55
por kiko
RodrigoSilva boa noite, coloque um espaço entre ) e as palavras existentes que dará certo, por exemplo assim (-) Depreciação de Máquinas.
Espero que ajude