¿Como guardar diferentes folios utilizando macros?

Como puedo guardar diferentes folios en una misma macro por ejemplo tengo una celda que al cambiar el numero cambia el tipo de folio, en este caso son 2 lo que necesito es guardar secuencial mente los dos folios pero que al cambiar de documento (folio) se quede en el anterior, es decir que en el primer folio tengo 5 y en el segundo tengo 8, cuando me encuentre en el primero cuando lo guarde guarde cambie a 6 pero que cuando yo cambie al folio dos y lo guarde cambie a 9 y así sucesivamente.
Espero haberme expresado bien :D

1 respuesta

Respuesta
1

No dejaste ningún tipo de referencia: dónde están los tipos de folios, dónde los números. Porqué una macro y no una función y siendo una macro necesitaríamos ver algo de código como para ubicar esta información que necesitas.

Dejo solo un ejemplo:

Con función: podrías tener 2 celdas auxiliares para guardar el máx valor asignado a cada folio. Por ej; M1 y M2. Y en la celda donde debe colocarse el nro, imaginemos D4, la fórmula sería:

=SI(D3=1;M1;M2)      es decir que si en D3 colocas que es el folio 1 tomará el valor de M1 sino el del folio 2

Esto luego necesita que al guardar ese documento se actualice el rango auxiliar M1:M2 guardando el último utilizado.

El código sería algo así como:

If [D3]=1 Then     'se trata de folio 1 por lo que se incrementa M1

    [M1] = [M1] + 1

Else

    [M2] = [M2] + 1

End if

Este código también podrías utilizarlo sin necesidad de colocar fórmula en celda sino en algún evento (podría ser al registrar el tipo de folio) colocar el nro.

Si la respuesta resuelve tu consulta no olvides valorarla. Sino aclara un poco más y la seguimos tratando.

Gracias por ayudarme, soy nuevo en esto de excel.

Si yo cambio el numero 1 que esta en la celda C6 por un dos cambia tanto el nombre del documento como el numero de folio

los datos cambian por una funcion la cual es =SI.ERROR(BUSCARV(C6,PREVIO!G3:H17,2,FALSO),"") para el nombre del documento y =SI.ERROR(BUSCARV(C6,PREVIO!G2:I4,3,FALSO),"") para el numero de folio.

En la hoja previo es donde almaceno todos los valores que utilizo con esa función en este caso son dos :

Lo que quiero realizar es crear un botón de guardar para los documentos y que dependiendo de donde se encuentre ya sea en el 1 o en el 2 lleve un conteo ascendente independiente al otro, es decir que si yo guardo el 1 que en este caso tiene el folio: MRL189 al guardar cambie a MRL190 y así sucesivamente, pero si estoy en el 2 y guardo el documento con folio: 356 cambie a 357 y así sucesivamente.
Espero haberme explicado mejor.

Gracias por la ayuda.

Bien, en el botón de guardado debes agregar estas instrucciones para actualizar el conteo en hoja PREVIO.

Si el doc es 2 solo se incrementa en 1 la celda I4... en cambio si es 1 hay que extraer la parte numérica e incrementarla. Y luego armar la cadena con los 3 caracteres + el nro actualizado.

Utilizo la función LEN (largo) porque asumo que la parte numérica no siempre tendrá 3 dígitos. En cambio asumo que la parte texto sí será siempre de 3.

'x Elsamatilde
'actualiza conteo de folios
If [B6] = 1 Then
    folio = Mid(Sheets("PREVIO").[I3], 4, Len(Sheets("PREVIO").[I3]) - 3) + 1
    Sheets("PREVIO").[I3] = Left(Sheets("PREVIO").[I3], 3) & folio
Else
    Sheets("PREVIO").[I4] = Sheets("PREVIO").[I4] + 1
End If

Si esto resuelve tu consulta no olvides valorarla (Buena o Excelente).

Sino comenta y la seguimos tratando.

Sdos!

¡Gracias! 

Todo esto lo pongo después de programar la macro para guardar el contenido o antes ya que se tiene que guardar el folio con el contenido del doc.

Después. Porque vas a guardar el doc tal como está ... y luego se incrementará para el próximo.

Pero atención al guardar... no explicas si se guardará en un Pdf, en otro libro o cómo.

Si es en un Pdf no hay nada que agregar. Sino recordá que ya no podrás dejar la función Buscarv porque sino se volverá a actualizar. Para esa celda tenes que guardar solo valor.

Por ej:

Sheets("HojaCopia").Range("B15") = [H7]

(Por supuesto que la hoja y celda serán las del destino.)

Sdos!

en teoría lo guardaría en otra base, no sabia que se podía generar un pdf. me parece estupendo esa idea.

¡Gracias!

Todo depende de la cantidad de documentación que guardarás.

Una base es lo ideal para ubicar los antecedentes y allí solo debes asegurarte de pasar la información con instrucciones como las que te dejé de ejemplo para no 'llevarte' las fórmulas.

Según tu imagen para el folio sería:

Sheets("Datos").Range("A" & filx) = [H7]

Donde filx será la fila de destino.

PD) Si necesitas ayuda para el guardado de datos por favor valora esta consulta para darla por cerrada y deja una nueva con el titulo correspondiente, como para no mezclar temas.

Puedes iniciar el mensaje con el texto 'Para Elsa' si te parece.

¡Gracias! 

Si cambie el folio 2 por MLG356 y quiero agregar un tercero tengo que agregar exactamente lo mismo solo cambiando la celda o necesito cambiar otra cosa más.

Es decir ahora quedaría así o estoy mal

        If [C6] = 1 Then
    folio = Mid(Sheets("PREVIO").[I3], 4, Len(Sheets("PREVIO").[I3]) - 3) + 1
    Sheets("PREVIO").[I3] = Left(Sheets("PREVIO").[I3], 3) & folio
Else
    If [C6] = 2 Then
    folio = Mid(Sheets("PREVIO").[I4], 4, Len(Sheets("PREVIO").[I4]) - 3) + 1
    Sheets("PREVIO").[I4] = Left(Sheets("PREVIO").[I4], 3) & folio
Else
    If [C6] = 3 Then
       folio = Mid(Sheets("PREVIO").[I5], 3, Len(Sheets("PREVIO").[I5]) - 2) + 1
       Sheets("PREVIO").[I5] = Left(Sheets("PREVIO").[I5], 2) & folio
End If
End If

La sintaxis correcta del bucle If...Else...End If sería:

If [C6] = 1 Then
    folio = Mid(Sheets("PREVIO").[I3], 4, Len(Sheets("PREVIO").[I3]) - 3) + 1
    Sheets("PREVIO").[I3] = Left(Sheets("PREVIO").[I3], 3) & folio
ElseIf [C6] = 2 Then
    folio = Mid(Sheets("PREVIO").[I4], 4, Len(Sheets("PREVIO").[I4]) - 3) + 1
    Sheets("PREVIO").[I4] = Left(Sheets("PREVIO").[I4], 3) & folio
ElseIf [C6] = 3 Then
       folio = Mid(Sheets("PREVIO").[I5], 3, Len(Sheets("PREVIO").[I5]) - 2) + 1
       Sheets("PREVIO").[I5] = Left(Sheets("PREVIO").[I5], 2) & folio
'Else
    'por otras opciones diferentes a las anteriores
End If

Como por ahora no tenés otras opciones inhabilité la línea del 'Else'

PD) Si llegás a tener alguna otra duda por favor inicia una nueva consulta en el Tablón. Podés iniciar el mensaje con el texto: Para Elsa y con mucho gusto me ocuparé.

También en las secciones Macros y Ejemplos de mi sitio podés encontrar suficiente material para iniciarte en las macros.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas