Página 1 de 1

Substituir caractere por outro usando vba

Enviado: 06 Abr 2020 às 14:13
por patrikpandolfi
Olá. Existe algum código vba que substitua um caractere de uma célula por outro? Por exemplo: quero que quando eu digite " : " este seja substituído automaticamente por " = " e que essa substituição seja feita assim que eu selecionar qualquer outra célula, e que conserve todo o resto que foi escrito na célula.

Obrigado.

Re: Substituir caractere por outro usando vba

Enviado: 06 Abr 2020 às 15:11
por babdallas
Veja se ajuda.
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lngTamanho      As Long
    Dim lngLoop         As Long
    Dim vrtTexto()      As Variant
    Dim strCaract       As String
    
    lngTamanho = VBA.Len(Target.Value)
    
    If lngTamanho = 0 Then Exit Sub
    
    ReDim vrtTexto(1 To lngTamanho) As Variant
    
    Application.EnableEvents = False
    For lngLoop = 1 To lngTamanho
        strCaract = VBA.Mid(Target.Value, lngLoop, 1)
        If Asc(strCaract) = VBA.Asc(";") Then
            vrtTexto(lngLoop) = "="
        Else
            vrtTexto(lngLoop) = strCaract
        End If
    Next lngLoop
    
    Target.Value = VBA.Join(vrtTexto, "")
    
    Erase vrtTexto
    Application.EnableEvents = True
End Sub

Re: Substituir caractere por outro usando vba

Enviado: 06 Abr 2020 às 17:42
por patrikpandolfi
babdallas escreveu:Veja se ajuda.
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lngTamanho      As Long
    Dim lngLoop         As Long
    Dim vrtTexto()      As Variant
    Dim strCaract       As String
    
    lngTamanho = VBA.Len(Target.Value)
    
    If lngTamanho = 0 Then Exit Sub
    
    ReDim vrtTexto(1 To lngTamanho) As Variant
    
    Application.EnableEvents = False
    For lngLoop = 1 To lngTamanho
        strCaract = VBA.Mid(Target.Value, lngLoop, 1)
        If Asc(strCaract) = VBA.Asc(";") Then
            vrtTexto(lngLoop) = "="
        Else
            vrtTexto(lngLoop) = strCaract
        End If
    Next lngLoop
    
    Target.Value = VBA.Join(vrtTexto, "")
    
    Erase vrtTexto
    Application.EnableEvents = True
End Sub

Esse código é quase perfeito pra mim, fiz um teste aqui e realmente funciona... Mas como faço pra aplicar ele apenas num range de células específico? Por exemplo (A2:B3).

Re: Substituir caractere por outro usando vba

Enviado: 06 Abr 2020 às 19:43
por Jessicar
Como faço pra converter as células de
letras em números preciso de uma planilha de combinações

Re: Substituir caractere por outro usando vba

Enviado: 07 Abr 2020 às 07:37
por babdallas
Tente isso.
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lngTamanho      As Long
    Dim lngLoop         As Long
    Dim vrtTexto()      As Variant
    Dim strCaract       As String
    
    lngTamanho = VBA.Len(Target.Value)
    
    If lngTamanho = 0 Then Exit Sub
    
    ReDim vrtTexto(1 To lngTamanho) As Variant
    
    Application.EnableEvents = False
    if not Application.Intersect(Target, Me.Range("A2:B3")) is nothing then
        For lngLoop = 1 To lngTamanho
             strCaract = VBA.Mid(Target.Value, lngLoop, 1)
            If Asc(strCaract) = VBA.Asc(";") Then
                vrtTexto(lngLoop) = "="
            Else
                vrtTexto(lngLoop) = strCaract
            End If
        Next lngLoop
    
         Target.Value = VBA.Join(vrtTexto, "")
    
        Erase vrtTexto
    end if
    Application.EnableEvents = True
End Sub

Re: Substituir caractere por outro usando vba

Enviado: 07 Abr 2020 às 11:10
por patrikpandolfi
Venho trazer a solução para minha questão. Um colega chamado Anderson, de um outro fórum, me deu uma força e consegui usar o código que ele me propôs, e então resolvi meu problema. Segue o código Vba.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False

Me.Range("A3").Value = Replace(Me.Range("A3").Value, ":", "=")
Me.Range("A4").Value = Replace(Me.Range("A4").Value, ":", "=")
Me.Range("B3").Value = Replace(Me.Range("B3").Value, ":", "=")
Me.Range("B4").Value = Replace(Me.Range("B4").Value, ":", "=")

Application.EnableEvents = True
End Sub