Reiniciar contador una vez que la fecha actualize

Comunidad de todoexpertos.
He buscado por toda la internet tratando de resolver este problema con un formulario que estoy desarrollando pero no he tenido exito hasta ahora. Espero, si no es mucho pedir, que alguno de ustedes pueda auxiliarme aqui.
Estoy tratando de programar un boton de imprimir en excel con la funcion de generar en una celda un numero tipo factura por cada hoja impresa en el siguiente formato "Dia/Mes/Año - 01" y que este numero se reinicie una vez que la fecha asociada a el se actualice.

Por ejemplo, los numeros de las hojas impresas en el dia 24 de mayo se verian de esta forma: 24/05/2018 - 01, 24/05/2018 - 02, 24/05/2018 - 03 y asi sucesivamente. Y las impresas al dia siguiente (25 de mayo) serian: 25/05/2018 - 01, 25/05/2018 - 02, etc...

En resumen, los ultimos dos digitos del formato vuelven a 1 cada vez que la fecha cambie.

Hasta ahora he logrado que el boton imprima la hoja generando un numero nuevo por cada hoja impresa, pero no encuentro manera de que haga el resto de la funcion. Aqui les facilito lo que tengo por el momento:

Private Sub B_Print()
If ActiveSheet.Name = "CATETERISMO CARDIACO DIAG." Then
ActiveSheet.Range("B2").Value = ActiveSheet.Range("B2").Value + 1
ThisWorkbook.Worksheets("CATETERISMO CARDIACO DIAG.").PrintOut
End If
End Sub

* CATETERISMO CARDIACO DIAG. Es el nombre de la hoja

Apreciara toda ayuda posible.

1 Respuesta

Respuesta
2

Te anexo la macro actualizada

Private Sub B_Print()
'Act Por Dante Amor
    Dim fec As Date
    If ActiveSheet.Name = "CATETERISMO CARDIACO DIAG." Then
        datos = Split(Range("B2"), "-")
        If UBound(datos) = 1 Then
            fec = WorksheetFunction.Trim(datos(0))
            num = WorksheetFunction.Trim(datos(1))
            If fec <> Date Then
                fecha = Format(Date, "dd/mm/yyyy")
                numero = Format(1, "00")
            Else
                fecha = Format(fec, "dd/mm/yyyy")
                numero = Format(Val(num) + 1, "00")
            End If
        Else
            fecha = Format(Date, "dd/mm/yyyy")
            numero = Format(1, "00")
        End If
        ActiveSheet.Range("B2").Value = fecha & " - " & numero
        ThisWorkbook.Worksheets("CATETERISMO CARDIACO DIAG.").PrintOut
    End If
End Sub


.

.Sal u dos. Dante Amor. No olvides valorar la respuesta. G raci as

.

Muchisimas gracias por colaborar, Dante.
Probe tu codigo y me funciono a la primera. Sin embargo cuando intento imprimir por segunda vez me genera un error:

 

Y esto es lo me que me señala en el debug:

Quizas hay un paso que estoy obviando, si tienes el conocimiento del problema me lo podrias señalar, por favor?
Una vez mas, gracias por tu ayuda ♥

En la celda H6 debes tener un dato así:

06/04/2018 - 02

Antes del guión debes tener una fecha.

Me dices qué hay en tu celda H6.


Te anexo una corrección en la macro para validar si existe una fecha, ya que por algún descuido la pueden modificar.

Private Sub B_Print()
'Act Por Dante Amor
    Dim fec As Date
    If ActiveSheet.Name = "CATETERISMO CARDIACO DIAG." Then
        datos = Split(Range("H6"), "-")
        If UBound(datos) = 1 Then
            dato0 = datos(0)
            If Not IsDate(dato0) Then
                MsgBox "En la celda no existe una fecha válida. Verificar"
                Exit Sub
            End If
            fec = WorksheetFunction.Trim(datos(0))
            num = WorksheetFunction.Trim(datos(1))
            If fec <> Date Then
                fecha = Format(Date, "dd/mm/yyyy")
                numero = Format(1, "00")
            Else
                fecha = Format(fec, "dd/mm/yyyy")
                numero = Format(Val(num) + 1, "00")
            End If
        Else
            fecha = Format(Date, "dd/mm/yyyy")
            numero = Format(1, "00")
        End If
        ActiveSheet.Range("H6").Value = fecha & " - " & numero
        ThisWorkbook.Worksheets("CATETERISMO CARDIACO DIAG.").PrintOut
    End If
End Sub

Prueba y me comentas

No había generado el numero 02 cuando presione el botón imprimir por segunda vez, le hice copy-paste a tu corrección e imprimió perfecto. Gracias una vez más por tu ayuda.

Por ultimo, si no es molestia, me gustaría que me sacaras de una duda. Es posible cambiar la fecha a otros formatos distintos al "/". ¿Algo cómo "ddmmyyyy"? Es solo una corrección de ultimo minuto por cuestiones de estetica;;

Claro. Cambia en la macro el formato

"dd/mm/yyyy"

Por esto:

"ddmmyyyy"

Al final de mi respuesta, hay un botón para valorarla, No olvides valorarme.

hahaha! Imagine que seria algo así pero no tuve el valor de probarlo por no arruinar el código.
Aprecio mucho tu valiosa ayuda y tiempo. Muchísimas gracias, Dante.
Que tenga un buen día♥

Ok. Intente imprimirlo por segunda vez y me dice que no existe alguna fecha valida en el campo. Imagino que el código no lo considera una fecha con este nuevo formato. Intentare solventar desde aquí. Pero si tienes alguna sugerencia lo apreciaría mucho.

Puede ser así:

Private Sub B_Print()
'Act Por Dante Amor
    Dim fec As Date
    If ActiveSheet.Name = "CATETERISMO CARDIACO DIAG." Then
        datos = Split(Range("H6"), "-")
        If UBound(datos) = 1 Then
            dato0 = WorksheetFunction.Trim(datos(0))
            If InStr(1, dato0, "/") = 0 Then
                'completar fecha
                dato0 = CDate(Mid(dato0, 1, 2) & "/" & Mid(dato0, 3, 2) & "/" & Mid(dato0, 5, 4))
            End If
            If Not IsDate(dato0) Then
                MsgBox "En la celda no existe una fecha válida. Verificar"
                Exit Sub
            End If
            fec = dato0
            num = WorksheetFunction.Trim(datos(1))
            If fec <> Date Then
                fecha = Format(Date, "ddmmyyyy")
                numero = Format(1, "00")
            Else
                fecha = Format(fec, "ddmmyyyy")
                numero = Format(Val(num) + 1, "00")
            End If
        Else
            fecha = Format(Date, "ddmmyyyy")
            numero = Format(1, "00")
        End If
        ActiveSheet.Range("H6").Value = fecha & " - " & numero
        ThisWorkbook.Worksheets("CATETERISMO CARDIACO DIAG.").PrintOut
    End If
End Sub

sal u dos

La pregunta no admite más respuestas

Más respuestas relacionadas