Como eliminar el guion que la macro asigna

Deseo modificar la macro que me hiciste a principio de julio la cual confirma si hay un texto en una columna y me coloca la primera letra del mismo mas le asigna un numero secuencial con el año, Ej: M001-15. Yo deseo quitar el guion y unificarlo, Ej: M00115.

Favor avisarme para enviarte la macro para los ajustes necesarios.

2 respuestas

Respuesta
1

Creó haberte respondido alguna vez... Pero mejor aclara para quien es la consulta...

Sdos!

Buenos días Elsa, es agradable saber de ud. de nuevo.

La consulta es para el Sr. Dante quien me creo la macro a principio de julio-15 y ahora deseo hacerle un cambio a la misma.

Saludos,

MG

Postdata; yo hice un requerimiento de otra macro y aun no me responden, ¿por casualidad sabrá ud. quien la tomo?

Cuando te diriges a alguien en especial debes indicarlo en el mensaje, porque somos varios los que colaboramos en esta categoría y no podemos recordar todas las consultas atendidas.

Con respecto a otra consulta, si no recibiste aviso de respuesta es que nadie la ha atendido aún. Podés revisar la sección Preguntas de tu perfil para ver si sigue pendiente. Creo que podés actualizarla para que vuelva a estar en los primeros lugares del tablón escribiendo alguna aclaración o comentario.

la pregunta dice que hay un experto pendiente de responder desde hace dos semanas.

No sé de qué consulta se trata ni puedo tomarla si ya la tiene otro experto... ante la duda y para no perder tiempo creá una nueva en el tablón así alguna otra persona pueda responderte.

Sdos y no olvides valorar la respuesta.

Elsa

Respuesta
1

H o l a:

Te anexo la macro actualizada

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Target.Value = "" Then
        Cells(Target.Row, "A") = ""
        Exit Sub
    End If
    mayor = 1
    If Not Intersect(Target, Columns("B")) Is Nothing Then
        For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
            If Cells(i, "A") <> "" Then
                If InStr(1, Cells(i, "A"), "-") > 0 Then
                    datos = Split(Cells(i, "A"), "-")
                    num = Val(Mid(datos(0), 2))
                    If num > mayor Then
                        mayor = num
                    End If
                End If
            End If
        Next
        Cells(Target.Row, "A") = Left(Target, 1) & mayor + 1 & Format(Date, "yy")
    End If
End Sub

S a l u d o s . D a n t e   A m o r.

Como estas Dante, es grato conversar contigo de nuevo.

Bien, hice algo parecido a la modificación que me enviaste en la macro anterior y me quito el guion pero, no me aumenta el numero secuencial, sino que me repite el mismo numero. Ej: m197-r197-s197 y así sucesivamente.

Saludos,

MG

Hola de nuevo,

Por casualidad podrías decirme quién tomo un requerimiento que hice sobre una macro hace unas semanas, porque aun no me responden.

Te agradecería la información, por favor.

MG

Ya no incrementa porque antes buscaba el guión, pero como ya no tiene el guión ya no realiza el incremento.

Puedes explicar cómo quieres el consecutivo, primero pusiste esto:

M00115

El consecutivo deberá tener cierta estructura para poder crear el siguiente consecutivo, ¿el primer carácter va a ser una letra? ¿Los siguientes 3 van a ser el consecutivo y los últimos 2 el año?

Pero si tienes esto M00115 y luego lo cambias a esto m197, ya no tiene la misma lógica, entonces no se puede determinar el siguiente consecutivo.

Entiendo y pido excusa por la confusión creada.

Primero va la primera letra del texto, luego va el numero consecutivo y finalmente el año, todo unido, tal como me la enviaste Ej.m115, j215, l315... etc. lo único que pido es que en lugar de colocar el año con un (-), lo una al numero secuencia.

Por favor olvida el ejemplo con los (00) como te lo envíe anteriormente. Todo lo que necesito es la 1ra letra, el numero secuencial más el año, unidos.

Gracias de nuevo

Pero el número secuencia debe tener una longitud fija, ¿de cuánto lo quieres? De 1 o de 3 dígitos, si lo dejas de 1 solamente va a contar del 1 al 9.

Debe tener flexibilidad para colocar hasta 4 caracteres en el numero secuencial en el futuro, es decir por si necesito crear la matricula M500015 

Te anexo la macro actualizada, quedó para 4 dígitos.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Target.Value = "" Then
        Application.EnableEvents = False
        Cells(Target.Row, "A") = ""
        Application.EnableEvents = True
        Exit Sub
    End If
    mayor = 0
    If Not Intersect(Target, Columns("B")) Is Nothing Then
        For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
            If Cells(i, "A") <> "" Then
                num = Val(Mid(Cells(i, "A"), 2, 4))
                If num > mayor Then
                    mayor = num
                End If
            End If
        Next
        Cells(Target.Row, "A") = Left(Target, 1) & Format(mayor + 1, "0000") & Format(Date, "yy")
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas