Como automatizar a formatação de maiúsculas para colunas selecionadas no Excel com o VBA?

0

Estou tentando automatizar a formatação digitada em texto em maiúsculas para as colunas B e C e estou com problemas para definir os destinos de coluna corretamente.

Encontrei este trecho de código em um fórum de ajuda do Excel, mas sei que esse código define as oito primeiras colunas como destino. Então, ajude-me a corrigi-lo para que as colunas B e C possam ser definidas como o alvo.

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)  
    If Target.Column > 8 Then Exit Sub  
    On Error GoTo ErrHandler  
    Application.EnableEvents = False  
    Target.Formula = UCase(Target.Formula)  
    ErrHandler:  
    Application.EnableEvents = True  
    End Sub  
    
por Prasad Shrivatsa 15.07.2018 / 17:38

2 respostas

1

Assim, ajude-me a corrigi-lo para que as colunas B e C possam ser definidas como o alvo.

A solução mais simples é fazer o seguinte:

  • Adicione uma nova segunda linha:

    If Target.Column = 1 Then Exit Sub
    
  • Alterar 8 para 3 :

    If Target.Column > 3 Then Exit Sub 
    

Então, seu código agora é o seguinte:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
If Target.Column = 1 Then Exit Sub   
If Target.Column > 3 Then Exit Sub  
On Error GoTo ErrHandler  
Application.EnableEvents = False  
Target.Formula = UCase(Target.Formula)  
ErrHandler:  
Application.EnableEvents = True  
End Sub  
    
por 17.07.2018 / 21:22
0

O código usa uma abordagem para excluir colunas e sair do sub quando não é a coluna da direita. Você pode usar uma abordagem diferente para nomear (incluir) as colunas que deseja assistir dessa forma:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
if not intersect(target,Range("B:C")) = nothing then
   ' run the code
end if
end sub

Com essa abordagem, você também pode assistir a várias colunas não contíguas com uma linha de código. Por exemplo, execute o código nas colunas B, F e Z

if not intersect(target,Range("B:B", "F:F", "Z:Z")) = nothing then
    
por 15.07.2018 / 22:49