Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
#7415
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!!
#7416
Não fica claro o que é o seu x.formula; acredito que seja uma celula.
Veja se auxilia
Código: Selecionar todos
Function 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
#7425
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
#7426
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
#7437
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....
#7439
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.
#7442
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!!
#7447
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?
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord