MACRO

23/01/2006 - 14:27 por mproys | Informe spam
Saludos amigos.

Tengo el siguiente algoritmo, quisiera que por favor me ayuden a
convertirlo en macro :


Si (Avance_de_produccion < Total_de_produccion) Y (Fecha Limite < F_actual
ENTONCES

Duracion = (Fecha actual - Fecha limite), de lo contrario que se mantenga
[Duracion]

Como veran lo que deseo es incrementar la duracion cuando la cantidad de
produccion no se llega alcanzar con la duracion inicial.

La ayuda que necesito, es como hacerlo en una macro.

Gracias por toda ayuda o recomendaciones.

Monica.

Preguntas similare

Leer las respuestas

#1 David
24/01/2006 - 00:56 | Informe spam
Hola, Mónica.

Voy a cambiar un poco tu algoritmo. Revisa si procede...

Primero:
Estoy suponiendo que "Avance_de_produccion" es el campo personalizado
"Number5", y que "Total_de_produccion" es el campo personalizado "Number6".
Esto para poder probarlo en un proyecto mío en el que ya he utilizado los
campos Number1...4.

Segundo:
No creo muy conveniente que utilices el campo Fecha Límite ("DeadLine"). En
mi criterio, si lo que quieres es aumentar la duración de la tarea, deberías
utilizar el campo "Final" ("Finish"). Aquí podríamos diferir en criterios,
pero revisa la lógica del proceso, y tú decides cuál será la mejor opción.


Considera las siguientes líneas de código, en la que (como te decía) tomo
como ejemplo a la tarea No.5:

If ActiveProject.Tasks(5).Number5 < ActiveProject.Tasks(5).Number6 _
And Int(ActiveProject.Tasks(5).Finish) < Date Then
ActiveProject.Tasks(5).Finish = Date & " " & Time
End If

Si se cumple la condición, cambio la fecha final de la tarea a la fecha y
hora del reloj del sistema, lo que automáticamente define una nueva duración
para la tarea en cuestión. Pruébalo con una tarea x de tu proyecto, y si
procede, podrías utilizar

ActiveProject.Tasks.Count

para hacer un ciclo que recorriera todas las tareas de tu proyecto. Otra
idea, podrías evaluar con:

ActiveProject.Tasks( j ).Summary

si la tarea es una tarea sumario, y no aplicarle el cambio de fecha.



Espero que estas ideas te sirvan como punto de partida. Nos cuentas.

Saludos cordiales...




"Monica Rodriguez" escribió:

Saludos amigos.

Tengo el siguiente algoritmo, quisiera que por favor me ayuden a
convertirlo en macro :


Si (Avance_de_produccion < Total_de_produccion) Y (Fecha Limite < F_actual
ENTONCES

Duracion = (Fecha actual - Fecha limite), de lo contrario que se mantenga
[Duracion]

Como veran lo que deseo es incrementar la duracion cuando la cantidad de
produccion no se llega alcanzar con la duracion inicial.

La ayuda que necesito, es como hacerlo en una macro.

Gracias por toda ayuda o recomendaciones.

Monica.


Respuesta Responder a este mensaje
#2 mproys
24/01/2006 - 18:49 | Informe spam
Gracias David, ya funciona, lo puse dentro de un For para trabajar en
todas las tareas del proyecto.. Tambien tengo la otra opcion para
actualizar la duracion sobre una tarea especifica.

Solo que no se como superar el error cuando el calculo se realiza por
equivocacion sobre una tarea vacia,, alli me sale error. Existe alguna
funcion que me permita controlarlo?

Gracias.

Monica.

David wrote:

Hola, Mónica.

Voy a cambiar un poco tu algoritmo. Revisa si procede...

Primero:
Estoy suponiendo que "Avance_de_produccion" es el campo personalizado
"Number5", y que "Total_de_produccion" es el campo personalizado "Number6".
Esto para poder probarlo en un proyecto mà­o en el que ya he utilizado los
campos Number1...4.

Segundo:
No creo muy conveniente que utilices el campo Fecha Là­mite ("DeadLine").


En
mi criterio, si lo que quieres es aumentar la duración de la tarea,


deberà­as
utilizar el campo "Final" ("Finish"). Aquà­ podrà­amos diferir en


criterios,
pero revisa la lógica del proceso, y tຠdecides cuà¡l serà¡ la mejor


opción.


Considera las siguientes là­neas de código, en la que (como te decà­a) tomo
como ejemplo a la tarea No.5:

If ActiveProject.Tasks(5).Number5 < ActiveProject.Tasks(5).Number6 _
And Int(ActiveProject.Tasks(5).Finish) < Date Then
ActiveProject.Tasks(5).Finish = Date & " " & Time
End If

Si se cumple la condición, cambio la fecha final de la tarea a la fecha y
hora del reloj del sistema, lo que automà¡ticamente define una nueva


duración
para la tarea en cuestión. Pruébalo con una tarea x de tu proyecto, y si
procede, podrà­as utilizar

ActiveProject.Tasks.Count

para hacer un ciclo que recorriera todas las tareas de tu proyecto. Otra
idea, podrà­as evaluar con:

ActiveProject.Tasks( j ).Summary

si la tarea es una tarea sumario, y no aplicarle el cambio de fecha.



Espero que estas ideas te sirvan como punto de partida. Nos cuentas.

Saludos cordiales...




"Monica Rodriguez" escribió:

> Saludos amigos.
>
> Tengo el siguiente algoritmo, quisiera que por favor me ayuden a
> convertirlo en macro :
>
>
> Si (Avance_de_produccion < Total_de_produccion) Y (Fecha Limite < F_actual
> ENTONCES
>
> Duracion = (Fecha actual - Fecha limite), de lo contrario que se mantenga
> [Duracion]
>
> Como veran lo que deseo es incrementar la duracion cuando la cantidad de
> produccion no se llega alcanzar con la duracion inicial.
>
> La ayuda que necesito, es como hacerlo en una macro.
>
> Gracias por toda ayuda o recomendaciones.
>
> Monica.
>
>
Respuesta Responder a este mensaje
#3 mproys
24/01/2006 - 19:02 | Informe spam
Otro problemita que se presento luego de actualizar la duracion es que
tambien avanza el Progreso, debido a que la tarea ya esta al 100% de
progreso, cuando se incrementa la duracion resulta que tambien se
actualiza el progreso,, existe alguna forma de que solo aumente la
duracion pero no el progreso??

Gracias.

Monica


David wrote:

Hola, Mónica.

Voy a cambiar un poco tu algoritmo. Revisa si procede...

Primero:
Estoy suponiendo que "Avance_de_produccion" es el campo personalizado
"Number5", y que "Total_de_produccion" es el campo personalizado "Number6".
Esto para poder probarlo en un proyecto mà­o en el que ya he utilizado los
campos Number1...4.

Segundo:
No creo muy conveniente que utilices el campo Fecha Là­mite ("DeadLine").


En
mi criterio, si lo que quieres es aumentar la duración de la tarea,


deberà­as
utilizar el campo "Final" ("Finish"). Aquà­ podrà­amos diferir en


criterios,
pero revisa la lógica del proceso, y tຠdecides cuà¡l serà¡ la mejor


opción.


Considera las siguientes là­neas de código, en la que (como te decà­a) tomo
como ejemplo a la tarea No.5:

If ActiveProject.Tasks(5).Number5 < ActiveProject.Tasks(5).Number6 _
And Int(ActiveProject.Tasks(5).Finish) < Date Then
ActiveProject.Tasks(5).Finish = Date & " " & Time
End If

Si se cumple la condición, cambio la fecha final de la tarea a la fecha y
hora del reloj del sistema, lo que automà¡ticamente define una nueva


duración
para la tarea en cuestión. Pruébalo con una tarea x de tu proyecto, y si
procede, podrà­as utilizar

ActiveProject.Tasks.Count

para hacer un ciclo que recorriera todas las tareas de tu proyecto. Otra
idea, podrà­as evaluar con:

ActiveProject.Tasks( j ).Summary

si la tarea es una tarea sumario, y no aplicarle el cambio de fecha.



Espero que estas ideas te sirvan como punto de partida. Nos cuentas.

Saludos cordiales...




"Monica Rodriguez" escribió:

> Saludos amigos.
>
> Tengo el siguiente algoritmo, quisiera que por favor me ayuden a
> convertirlo en macro :
>
>
> Si (Avance_de_produccion < Total_de_produccion) Y (Fecha Limite < F_actual
> ENTONCES
>
> Duracion = (Fecha actual - Fecha limite), de lo contrario que se mantenga
> [Duracion]
>
> Como veran lo que deseo es incrementar la duracion cuando la cantidad de
> produccion no se llega alcanzar con la duracion inicial.
>
> La ayuda que necesito, es como hacerlo en una macro.
>
> Gracias por toda ayuda o recomendaciones.
>
> Monica.
>
>
Respuesta Responder a este mensaje
#4 David
24/01/2006 - 21:01 | Informe spam
Podríamos capturar el contenido del campo Trabajo Actual("ActualWork") antes
de modificar la fecha de fin de la tarea, y luego volver a asignársela.
Sería algo como esto:

TR = ActiveProject.Tasks(5).ActualWork
ActiveProject.Tasks(5).Finish = Date & " " & Time
ActiveProject.Tasks(5).ActualWork = TR



"Monica Rodriguez" escribió:

Otro problemita que se presento luego de actualizar la duracion es que
tambien avanza el Progreso, debido a que la tarea ya esta al 100% de
progreso, cuando se incrementa la duracion resulta que tambien se
actualiza el progreso,, existe alguna forma de que solo aumente la
duracion pero no el progreso??

Gracias.

Monica


David wrote:

> Hola, Mónica.

> Voy a cambiar un poco tu algoritmo. Revisa si procede...

> Primero:
> Estoy suponiendo que "Avance_de_produccion" es el campo personalizado
> "Number5", y que "Total_de_produccion" es el campo personalizado "Number6".
> Esto para poder probarlo en un proyecto mà­o en el que ya he utilizado los
> campos Number1...4.

> Segundo:
> No creo muy conveniente que utilices el campo Fecha Là­mite ("DeadLine").
En
> mi criterio, si lo que quieres es aumentar la duración de la tarea,
deberà­as
> utilizar el campo "Final" ("Finish"). Aquà­ podrà­amos diferir en
criterios,
> pero revisa la lógica del proceso, y tຠdecides cuà¡l serà¡ la mejor
opción.


> Considera las siguientes là­neas de código, en la que (como te decà­a) tomo
> como ejemplo a la tarea No.5:

> If ActiveProject.Tasks(5).Number5 < ActiveProject.Tasks(5).Number6 _
> And Int(ActiveProject.Tasks(5).Finish) < Date Then
> ActiveProject.Tasks(5).Finish = Date & " " & Time
> End If

> Si se cumple la condición, cambio la fecha final de la tarea a la fecha y
> hora del reloj del sistema, lo que automà¡ticamente define una nueva
duración
> para la tarea en cuestión. Pruébalo con una tarea x de tu proyecto, y si
> procede, podrà­as utilizar

> ActiveProject.Tasks.Count

> para hacer un ciclo que recorriera todas las tareas de tu proyecto. Otra
> idea, podrà­as evaluar con:

> ActiveProject.Tasks( j ).Summary

> si la tarea es una tarea sumario, y no aplicarle el cambio de fecha.

>

> Espero que estas ideas te sirvan como punto de partida. Nos cuentas.

> Saludos cordiales...




> "Monica Rodriguez" escribió:

> > Saludos amigos.
> >
> > Tengo el siguiente algoritmo, quisiera que por favor me ayuden a
> > convertirlo en macro :
> >
> >
> > Si (Avance_de_produccion < Total_de_produccion) Y (Fecha Limite < F_actual
> > ENTONCES
> >
> > Duracion = (Fecha actual - Fecha limite), de lo contrario que se mantenga
> > [Duracion]
> >
> > Como veran lo que deseo es incrementar la duracion cuando la cantidad de
> > produccion no se llega alcanzar con la duracion inicial.
> >
> > La ayuda que necesito, es como hacerlo en una macro.
> >
> > Gracias por toda ayuda o recomendaciones.
> >
> > Monica.
> >
> >



Respuesta Responder a este mensaje
#5 David
24/01/2006 - 21:08 | Informe spam
¿Qué es una tarea vacía?

La solución iría encaminada a encontrar alguna forma de identificarla en
base a algún campo. Por ejemplo, si la tarea está vacía porque no tiene
nombre, podría utilizarse

Len(ActiveProject.Tasks(2).Name)<>0

como condición para ejecutar la operación.

Me cuentas...


"Monica Rodriguez" escribió:

Gracias David, ya funciona, lo puse dentro de un For para trabajar en
todas las tareas del proyecto.. Tambien tengo la otra opcion para
actualizar la duracion sobre una tarea especifica.

Solo que no se como superar el error cuando el calculo se realiza por
equivocacion sobre una tarea vacia,, alli me sale error. Existe alguna
funcion que me permita controlarlo?

Gracias.

Monica.

David wrote:

> Hola, Mónica.

> Voy a cambiar un poco tu algoritmo. Revisa si procede...

> Primero:
> Estoy suponiendo que "Avance_de_produccion" es el campo personalizado
> "Number5", y que "Total_de_produccion" es el campo personalizado "Number6".
> Esto para poder probarlo en un proyecto mà­o en el que ya he utilizado los
> campos Number1...4.

> Segundo:
> No creo muy conveniente que utilices el campo Fecha Là­mite ("DeadLine").
En
> mi criterio, si lo que quieres es aumentar la duración de la tarea,
deberà­as
> utilizar el campo "Final" ("Finish"). Aquà­ podrà­amos diferir en
criterios,
> pero revisa la lógica del proceso, y tຠdecides cuà¡l serà¡ la mejor
opción.


> Considera las siguientes là­neas de código, en la que (como te decà­a) tomo
> como ejemplo a la tarea No.5:

> If ActiveProject.Tasks(5).Number5 < ActiveProject.Tasks(5).Number6 _
> And Int(ActiveProject.Tasks(5).Finish) < Date Then
> ActiveProject.Tasks(5).Finish = Date & " " & Time
> End If

> Si se cumple la condición, cambio la fecha final de la tarea a la fecha y
> hora del reloj del sistema, lo que automà¡ticamente define una nueva
duración
> para la tarea en cuestión. Pruébalo con una tarea x de tu proyecto, y si
> procede, podrà­as utilizar

> ActiveProject.Tasks.Count

> para hacer un ciclo que recorriera todas las tareas de tu proyecto. Otra
> idea, podrà­as evaluar con:

> ActiveProject.Tasks( j ).Summary

> si la tarea es una tarea sumario, y no aplicarle el cambio de fecha.

>

> Espero que estas ideas te sirvan como punto de partida. Nos cuentas.

> Saludos cordiales...




> "Monica Rodriguez" escribió:

> > Saludos amigos.
> >
> > Tengo el siguiente algoritmo, quisiera que por favor me ayuden a
> > convertirlo en macro :
> >
> >
> > Si (Avance_de_produccion < Total_de_produccion) Y (Fecha Limite < F_actual
> > ENTONCES
> >
> > Duracion = (Fecha actual - Fecha limite), de lo contrario que se mantenga
> > [Duracion]
> >
> > Como veran lo que deseo es incrementar la duracion cuando la cantidad de
> > produccion no se llega alcanzar con la duracion inicial.
> >
> > La ayuda que necesito, es como hacerlo en una macro.
> >
> > Gracias por toda ayuda o recomendaciones.
> >
> > Monica.
> >
> >



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida