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 todosPrivate 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 todosPrivate 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 todosPrivate 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