Usar macro(VBA) p/ Placa de carro

Prezados,

Gostaria de saber como configuro uma coluna que irá ser digitada a placa de carros, para que fique na seguinte formatação: AAA-0000?
Tentei criar “máscara”, tipo: AAA"-"0000, mas não dá!

Olá @Toshi

Creio que formatar diretamente não dá, mas pode usar assim:

=MAIÚSCULA(ESQUERDA(A1;3))&"-"&DIREITA(A1;4)

ou no vba, definindo a coluna, que no caso fiz de b1:b100

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim letra As String, numero As String
    For Each x In Range("b1:b100")
    If x.Value <> "" And Len(x.Value) = 7 Then
        x.Value = UCase(x.Value)
        letra = Left(x.Value, 3)
        numero = Right(x.Value, 4)
        x.Value = letra & "-" & numero
    End If
    Next
End Sub

Espero ter ajudado.
abs

Obrigado @lporto!
Tentei no vba, mas não deu certo!

Sub placa()

’ placa Macro

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim letra As String, numero As String
For Each x In Range(“b1:b100”)
If x.Value <> “” And Len(x.Value) = 7 Then
x.Value = UCase(x.Value)
letra = Left(x.Value, 3)
numero = Right(x.Value, 4)
x.Value = letra & “-” & numero
End If
Next
End Sub

Quanto executo aparece “Erro de compilação: era esperado End Sub”!

Colega @Toshi, você está colocando uma Sub dentro de outra sub.
Cole apenas o código do colega @lporto no objeto planilha da sua pasta de trabalho.

Veja o objeto “Plan1” selecionado à esquerda.

O código funciona corretamente…

Perfeito colega @xlarruda.
Lembrando que tem que ser dentro da planilha que vai conter as placas…
abs

Obrigado @xlarruda e @lporto!
Agora consegui!
Valeu pela ajuda!

Olá!

E agora que temos o Padrão Mercosul com uma letra entre os números?

Essa letra fica sempre entre o 1 e o 2 número?
Por exemplo: AAA-0A00

Continua funcionando da mesma maneira

Obrigado… viajei na idéia, pensei que o campo de números tinha algum tipo de validação… obrigado pela atenção. Deu certo!

Pessoal, se eu quisesse acrescentar mais um código dentro da mesma sentença para deixar todas as letras maiúsculas um determinado Range na mesma planilha, tipo (A1:A1000)… já tentei diversos códigos, mas dá erro de compilação.

Sub maiuscula()
For Each cel In ActiveSheet.Range("A1:A1000")
    If cel.Value <> "" Then
        cel.Value = UCase(cel)
    End If
Next
End Sub

Coloca isso na planilha onde quer que a macro rode

1 Curtida

Olá Arruda, na verdade gostaria de deixar automática, sem a necessidade de ficar executando, por isso pensei em deixar junto com o código da placa:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim letra As String, numero As String
For Each x In Range(“d1:d1000”)
If x.Value <> “” And Len(x.Value) = 7 Then
x.Value = UCase(x.Value)
letra = Left(x.Value, 3)
numero = Right(x.Value, 4)
x.Value = letra & “-” & numero
End If
Next
End Sub

1 Curtida

legal, não testei mas acho que seu codigo está correto