Crear macro que me indique el siguiente de la secuencia

Necesito crear una Macro, que con un botón en la Hoja2, me revise en la Hoja1 la columna A (Columna A es un consecutivo para formularios F1, F2, F3, etc.) y revise cual es el último que fue incluido y en la celda D3 de la hoja 2 me indique el que seguiría (si el último en la columna A de la Hoja 1 es A23, que me indique en la celda D3 A24)

Respuesta
2

Te anexo la macro

Sub Siguiente()
    Sheets("Hoja2").Range("D3") = "A" & Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row + 1
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

hace 1 hora

Karlos Vega

Buenas tardes Dante

La macro que escribiste me indica cual es la siguiente celda libre;   pero lo que ocupo es que me indique cual sería el siguiente consecutivo; es decir si en la celda A23 está el formulario “FB55”, me indique entonces que en la celda A24 lo que seguiría es el formulario es el FB56

Faltó tu ejemplo.

Te anexo la actualización

Sub Siguiente()
    Set h1 = Sheets("Hoja1")
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    h1.Range("A" & u).AutoFill Destination:=h1.Range("A" & u & ":A" & u + 1), Type:=xlFillDefault
    Sheets("Hoja2").Range("D3") = h1.Range("A" & u + 1).Value
    h1.Range("A" & u + 1).Value = ""
End Sub

1 respuesta más de otro experto

Respuesta
1

.27.01.17

Buenas tardes, Karlos

Está rutina hace lo que solicitas.

Accede al Editor de VBA (Atajo: Alt + F11), allí inserta un módulo (Insertar-Módulo) y pega el siguiente código:

Sub UltimaCelda()
'---- Variables modificables ----
'=== Karlos, modifica estos datos de acuerdo a tu proyecto:
    HojaOrig = "Hoja1" 'hoja donde está la lista de formularios
    CeldaOrig = "A1"
    HojaDest = "Hoja2" ' Hoja donde dejar la dirección
    CeldaDest = "D3" ' Celda donde dejar la dirección
'---- fin Variables
'
'---- inicio de rutina:
'
UltCelda = Sheets(HojaOrig). Range(CeldaOrig).End(xlDown). Address(False, False)
Sheets(HojaDest). Range(CeldaDest).Value = Sheets(HojaDest). Range(UltCelda). Offset(1). Address(False, False)
End Sub

Nota que, al principio del código, coloqué unas variables para que lo adaptes a tu archivo o por si necesitas cambiar las ubicaciones.

Coméntame si resuelve lo que buscabas -y, en tal caso, agradeceré que califiques mi contribución- o escribeme de nuevo aquí, si necesitas más apoyo con esto.

Un abrazo

Fernando

.

Buenas tardes Fernando

La macro que escribiste me indica cual es la siguiente celda libre;   pero lo que ocupo es que me indique cual sería el siguiente consecutivo; es decir si en la celda A23 está el formulario “FB55”, me indique entonces que en la celda A24 lo que seguiría es el formulario es el FB56

.

Ok, Karlos

En realidad, eso no es lo que planteaste en la pregunta original:

"... Que me indique en la celda D3 A24"

Entonces modifiqué la rutina para que coloque en D3 cuál es el número de formulario siguiente.

Asumiré, a tal fin, que ellos se identifican con una serie de letras al principio y un número de orden al final, como el ejemplo que diste (FB55).

Sub ProxForm()
'---- Variables modificables ----
'=== Karlos, modifica estos datos de acuerdo a tu proyecto:
    HojaOrig = "Hoja1" 'Hoja donde está la lista de formularios
    CeldaOrig = "A1" 'Celda donde inicia listado de formularios
    HojaDest = "Hoja2" ' Hoja donde dejar el próximo formulario
    CeldaDest = "D3" ' Celda donde dejar el próximo formulario
'---- fin Variables
'
'---- inicio de rutina:
'  
UltCelda = Sheets(HojaOrig).Range(CeldaOrig).End(xlDown).Address(False, False)
Formulario = Trim(Sheets(HojaOrig).Range(CeldaOrig).End(xlDown).Value)
Letra = ""
Nume = ""
Largor = Len(Formulario)
If Len(Formulario) Then
    For posi = 1 To Largor
        Caracter = Mid(Formulario, posi, 1)
        'separa letras
        If Not IsNumeric(Caracter) Then
            Letra = Letra & Caracter
        'separa numero
        Else
            Nume = Nume & Caracter
        End If
    Next
End If
Proximo = Letra & Nume + 1
'Sheets(HojaDest).Range(CeldaDest).Value = Sheets(HojaDest).Range(UltCelda).Offset(1).Address(False, False)
Sheets(HojaDest).Range(CeldaDest).Value = IIf(Len(Proximo), Proximo, "No encontrado")
End Sub

Las variables son las mismas, solo que en la celda de destino dejará el código del próximo formulario a utilizar. A este efecto no importa con qué letras empiece, la rutina repetirá las que encuentre en la última celda ocupada.

Espero que sea lo que necesitas.

Un abrazo

Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas