Página 1 de 1

[RESUELTO] función para calcular la fecha de próximo trienio

Publicado: Vie Jul 20, 2018 10:44 am
por userpepe
Hola a todos;

Soy nuevo en esto de vba y macros y tengo algún problema con el que quizá podais ayudarme.
Estoy intentando calcular la fecha del proximo trienio de un trabajador, teniendo como dato la fecha de inicio.
He intentado crear una funcion, pero no encuentro el error... :(

Os dejo el codigo por si podeis echarme una mano. Muchas gracias

Function trienios(F_alta) as Date
Dim nDia As Integer ' Día de la fecha de inicio.
Dim nMes As Integer ' Mes de la fecha de inicio.
Dim nAno As Integer ' Año de la fecha de inicio.
Dim F_alta as Date

nAno = Year(F_alta)
nMes = Month(F_alta)
nDia = Day(F_alta)

Do while nAno < Year(Now)

nAno = nAno + 3

Exit Do
Loop

If nDia > 1 And nMes = 12 Then
nMes = 1
nAno = nAno + 1
ElseIf nMes < 12 Then
nMes = nMes + 1
EndIf


trienios = cDate(DateSerial(nAno, nMes, 1))

End Function

Re: funcion para calcular la fecha del proximo trienio

Publicado: Vie Jul 20, 2018 12:00 pm
por RMG
Hola,

Prueba esto más sencillo. Puedes hacerlo si lo prefieres directamente en el sub en vez de la función.

Código: Seleccionar todo

Sub macrotrienio()'macro llamada a la funcion
print TRIENIO 'valor de la funcion
End Sub

Function trienio()'(F_inicio As Date)
Dim F_inicio As Date
F_inicio = "20/10/2018"
TRIENIO = DateAdd ("yyyy", +3, F_inicio)
End Function
Saludos

Re: funcion para calcular la fecha del proximo trienio

Publicado: Sab Jul 21, 2018 7:29 pm
por userpepe
Hola RMG

Muchas gracias por contestar.
De la forma que me dices solo sumas tres años a una fecha no?

yonecesito saber cual va ser la fecha del proximo trienio, que siga sumando tres años a esa fecha hasta que el resultado sea superior a la fecha actual.
Un saludo

Re: funcion para calcular la fecha del proximo trienio

Publicado: Mié Jul 25, 2018 10:02 pm
por fornelasa
No sé si he entendido bien, a ver:
La formula "=trienio" está en Ctrl+F3 <> trienio
Saludos, Federico.

Re: funcion para calcular la fecha del proximo trienio

Publicado: Jue Jul 26, 2018 11:24 am
por userpepe
Hola fornelasa;

Lo has entendido perfectamente! Muchas gracias por responder.
El único problema que le encuentro es con los trienios que se cumplen en el mes que estamos ahora. Se pasa directamente al siguiente.

Re: funcion para calcular la fecha del proximo trienio

Publicado: Jue Jul 26, 2018 12:21 pm
por fornelasa
El único problema que le encuentro es con los trienios que se cumplen en el mes que estamos ahora. Se pasa directamente al siguiente.
Indica por favor uno o dos o tres..... ejemplos concretos con fechas para ver esos casos.
Originalmente dijimos :
yo necesito saber cual va ser la fecha del proximo trienio, que siga sumando tres años a esa fecha hasta que el resultado sea superior a la fecha actual.
Saludos.

Re: funcion para calcular la fecha del proximo trienio

Publicado: Vie Jul 27, 2018 9:22 am
por userpepe
Hola Fornelasa;

Tu respuesta me sirvio perfectamente; La idea es:
1. Que una persona que cumple un trienio en un día que no sea el día 1 de un mes se pasa al dia 1 del mes siguiente.
2. Que yo pueda en el mes actual ver todos los que cumplen un trienio este mes.

A partir de tu formula he intentado cumplir estas dos normas que te comento.
Te subo archivo y la ultima fecha añadida sería el que cumple trienio este mes.

Seguramente no es la forma más elegante pero me funciona :P

Muchas gracias

Re: funcion para calcular la fecha del proximo trienio

Publicado: Vie Jul 27, 2018 5:28 pm
por fornelasa
¡Perfecto! que bueno que ha quedado resuelto.

Solo cómo comentario, considero que pediste una cosa y terminaste haciendo otra distinta, claramente son dos cosas diferentes:
userpepe escribió: yo necesito saber cual va ser la fecha del próximo trienio, que siga sumando tres años a esa fecha hasta que el resultado sea superior a la fecha actual
Que una persona que cumple un trienio en un día que no sea el día 1 de un mes se pasa al dia 1 del mes siguiente.
Recuerda, cuando los temas han sido resueltos debemos marcarlos como tal, aquí nos dicen como hacerlo: https://forum.openoffice.org/es/forum/v ... f=3&t=2668

Saludos, Federico.