Pasar resultado de función a variable

Después de llevarme la desilusión de que mi pregunta fuera rechazada 2 veces por el mismo experto ( ralvaradot) sin motivo alguno, apelo al conocimiento de todo alma caritativa (incluyendo otros expertos claro) para solucionar mi problema.
Desde ya, agradecido.
La pregunta:
Estoy tratando de realizar lo del titulo con la función DÍAS.LAB y no lo logro.
Usando el Grabador de Macros el resultado queda en una celda pero como digo, yo necesito que quede en una variable y no sé hacer dos cosas:
A) Pasar el resultado a una variable
B) Como cambiar los parámetros Cells (C1R1) por Range.
Gs.

1 respuesta

Respuesta
1
Sub Macro1()
Dim Variable As Integer
Variable = WorksheetFunction.NetworkDays(Range("B1").Value, Range("C1").Value)
End Sub
No se si entendí bien tu pregunta, haber si es lo que quieres
Estimado. Me da error 438. El objeto no admite esta propiedad o método.
Me parece que lo que necesita "como parámetro" debe ser el número de fecha propiamente dicho es decir, un long.
Así, como lo dices tu, no funciona. Yo había hecho lo mismo ahora que recuerdo.
Me parece que la solución sería utilizarlo como una función y que reciba los dos parámetros de entrada como long devolviendo un integer.
Ojala se pudiera hacer más sencillo.
Abrazo
Si funciona y si, los parámetros de la función NetWorkDays son de tipo Date, yo solo puse como ejemplo esas dos celdas pero no se en cuales celdas tengas tus valores o en que variables estén los valores de los parámetros, eso depende de ti, se supone que en esas celdas deberías tener las dos fechas, inicio y fin, y la Función "regresa" un valor de Tipo Integer, funciona, lo comprobé antes de postear la respuesta.
La verdad, me preocupa mucho tu respuesta porque eso indicaría que mi Excel tiene un problema. La función que nos ocupa de no estar equivocado lo que hace es pasa una fecha a Long precisamente para efectuar la resta y así conocer los días laborables.
Al ppio. Como he hecho tantas veces por desconocer, grabo la función en una macro y luego observo y ajusto su código según mi necesidad.
Una macro sencilla grabada para esta función sería : ActiveCell.FormulaR1C1 = "=DIAS.LAB(RC[-2],RC[-1])" .
Si yo cambio el formato R1C1 a algo más sencillo, quedaría : Range("D1"). Formula = "=DIAS.LAB(B1,C1)" pero.....pero... si yo necesitara recorrer un rango de celdas ahí empieza mi problema.
Suponte un rango de 3 filas. Ok. i = 1 , for i=1 to 3 Range("D" & i).Formula= "=DIAS.LAB((Range("B" & i), Range("C" & i))
Falla por error de sintaxis.
Slds.
Relaizada con la Grabadora de Macros y posteriormente modificada:
Sub Macro1()
'
' Macro1 Macro
'Suponiendo q el resultado ira en la columna 1, la fecha inicial en la coluna 2 y
'la fecha final en la columna 3
For r = 1 To 10
Cells(r, 1).FormulaR1C1 = "=NETWORKDAYS(RC[1],RC[2])"
Next
End Sub
Perfecto! Como a mí me gusta más el formato Range por eso lo de Range("A" & i) .. etc, me encerré en ese formato pero tu ejemplo ahora si funciona a la perfección.
Muchas Gracias.
Abrazo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas