Hola
Me podrían brindar un suporte sobre un código VBA que estoy trabajando en excel; el concepto es hacer un código que trabaje en una columna con las siguientes condiciones:
- Celda con Lista desplegable que incluya un guion de concatenar, donde se ha unido un numero y una descripción, luego devolver solo el numero.
- Celda con Lista desplegable con cualquier numero o texto que no contenga el guion.
- Celda con cualquier numero o letra.
He logrado encontrar y evaluar algunos códigos que describo a continuación; El código 1 y 2 funcionan mas o menos igual, pero el problema es que no devuelve el numero donde se encuentra el guion; mientras que el codigo 3 funciona bien para devolver el numero que tiene el guión, pero para el resto de celdas no funciona, borra todo.
CODIGO 1
Private Sub Worksheet_Change(ByVal Target As Range)
Dim m
Dim n%
If
Target.Column = 1 Then
m =
Target.Value
application.EnableEvents = True
ElseIf
Target.Column = 1 Then
n = InStr(1,
Target.Value, " - ")
Application.EnableEvents = False
Target.Value = Left(
Target.Value, n)
Application.EnableEvents = True
End If
End Sub
CODIGO 2
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n As String
Dim m As String
Application.EnableEvents = True
On Error GoTo Exitsub
If
Target.Column = 1 Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
GoTo Exitsub
Else: If
Target.Value = "" Then GoTo Exitsub Else
Application.EnableEvents = False
m =
Target.Value
Application.Undo
n = InStr(1,
Target.Value, " - ")
If n = "" Then
Target.Value = m
Else
If InStr(1, n, m) = 0 Then
Target.Value = n & "," & m
Else:
Target.Value = n
End If
End If
End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub
CODIGO 3
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n%
If
Target.Column = 1 Then
n = InStr(1,
Target.Value, " - ")
Application.EnableEvents = False
Target.Value = Left(
Target.Value, n)
Application.EnableEvents = True
End If
End Sub
INDIQUE PRIMERO SI SE PUEDE HACER Y EN CUANTO TIEMPO LO PODRIA TENER LISTO
SALUDOS
Plazo de Entrega: No definido