Insertar signo

Hola Fernando !
Quisiera saber como realizar por medio de VBA, un formato personalizado, en el cual pueda insertar el signo " - " entre cada tres posiciones del numero digitado.
Ejemplo :
123456789 separe la cantidad de la siguiente forma 123-456-789
150000000 150-000-000
181515150 181-515-150
Invariablemente tienen que ser 9 dígitos, y que trabaje sobre determinada columna.
Por la atención que prestes a mi correo mil gracias.
Recibe un fuerte abrazo
José

1 respuesta

1
Respuesta de
Hola, José!
En realidad no es tan difícil.
Este sería el código a colocar en el panel de macros de la hoja donde el proceso debe ejecutarse:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'indica rango donde quieres que ocurra:
Enrango = "B1:B888"
Separa = "-"
If Not Intersect(Target, Range(Enrango)) Is Nothing Then
If Not IsEmpty(Target) Then
If Not Target.HasFormula Then
Application.EnableEvents = False
If IsNumeric(Target) Then
'secuencia de separación del número
Texto = Trim(Target.Value)
If InStr(1, Texto, Separa) = 0 Then 'controla si ya está separado o no
Cadena = ""
For posicion = Len(Texto) To 1 Step -1
Carakter = Mid(Texto, posicion, 1)
Cadena = Carakter & Cadena
If (Len(Texto) - posicion + 1) Mod 3 = 0 And posicion <> 1 Then Cadena = Separa & Cadena
Next
Target.Value = Cadena
End If
End If
Application.EnableEvents = True
End If
End If
End If
End Sub
Verás que solo reemplacé la línea que colocaba el prefijo "F-" por la secuencia de separación del número.
Como sólo debe actuar en la celda activa el ciclo Do...Loop Until no es necesario.
En aquella secuencia reemplacé ActiveCell por Target que serían equivalentes pero conviene aprovechar que VBA detecta cual es la celda donde se hizo el cambio.
Obviamente, le agregué la variable que guarda el separador a usar.
Mantuve los controles de intersección de rangos, de que la celda no haya quedado vacía (cuando borras su contenido) y que la celda no tenga una fórmula.
Y le agregué también un control de que sea un número por si tuvieras que ingresar un texto en aquel rango (en cuyo caso no querrías que lo separe con guiones)
Pruébalo y coméntame si funcioné para ti.
Que tengas un gran fin de semana!
Fernando
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje