Help - Correção de ...
 
Notifications
Clear all

Help - Correção de Codigo ( Pri.Maiuscula )

6 Posts
1 Usuários
0 Reactions
1,755 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá Pessoal.

Bom Natal e Boas festas a todos do fórum.

Bom para fechar o ano com chave de ouro, gostaria de um help de voces.

Bom nessas googleadas pela net, achei esse código que transforma para a primeira Letra para Maiúscula, talvez tenha até sido aqui onde tenha copiado esse codigo :?: vai saber agora.

Codigo :

Sub Converte_Primeira_Maiuscula()
Dim C As Range
For Each C In Selection
On Error Resume Next
C = StrConv(C, vbProperCase)
Next C
End Sub

Bom o codigo funciona que é uma belezura ... massssssss pqp me deixou em mals lençois, pois veja bem oque ele faz :

Antes de executar o codigo vba :

nome dta nasc
antonio carlos pereira lacerda 05/11/1964

DEPOIS da execução do codigo vba

Nome Dta Nasc
Antonio Carlos P. Lacerda 11/05/1964

Observerm o ERRO que aconteceu na data

o codigo alterou a data como 11 é MAIOR que 05 ( acho que essa a logica do codigo ) ele acabou fazendo essa inversão.

Agora adivinhem como fiquei , pois tinha feito isso em varias planilhas... e planilhas com mais de 2.000 linhas.

Tem como colocar um IF e comparar se a celula não é numerica e caso seja verdade ( not numeric ) ai sim aplicar o codigo.

Bom Obrigado pela ajuda durante o ano.

UM Bom Natal e Boas Festas.

Um 2012 bem melhor para todos.

Abçs

ACP.Lacerda

 
Postado : 22/12/2011 2:52 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Tente assim:

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 ")
      Else
         C.Value = UCase(C.Value)
      End If
   Next C
End Sub

referência: http://www.tomasvasquez.com.br/forum/viewtopic.php?f=17&t=519#p3070

 
Postado : 22/12/2011 9:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá.

JoseA.

Obrigado pela resposta, testei aqui em casa no excel 2010 e tudo funcionou bem , na verdade ate o codigo original funcionou perfeitamente com as datas, mas no serviço usamos o excel 2003, então vou testar no serviço quando voltar, mas obrigado pela ajuda.

Um feliz 2012.

Antonio .

 
Postado : 25/12/2011 6:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

;)

 
Postado : 25/12/2011 6:46 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá

JoseA.

Perfeito funcionou muito bem aqui no Excel 2003 .

Vlw

Obrigadão

Antonio CP Lacerda

 
Postado : 27/12/2011 6:46 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Vlw. ;)

 
Postado : 27/12/2011 7:19 am