es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambiar el valor de otra celda a través de una Función Definida por el Usuario.

La función TotalHours() está diseñada para aceptar dos rangos. El primer rango generalmente debería ser una fila por siete columnas (siete días de la semana) y el segundo rango es una sola celda para aceptar un valor.

Tengo un problema para establecer el valor de la celda única.

La línea con la que tengo un problema:

rCell.Value = sngOT

Recibo:

“Error definido por la aplicación o el objeto”.

Intenté rCell.Cells(1,1).Value = sngOT y obtengo el mismo error.

Function TotalHours(myRange As Range, rOT As Range) As Single
Dim sngHoras As Single, sngNormal As Single, sngOT As Single
Dim rCell As Range

sngHoras = 0
sngNormal = 0
sngOT = 0

For Each rCell In myRange
    If rCell.Value > 8 Then
        sngOT = sngOT + rCell.Value - 8
        sngNormal = sngNormal + 8
    Else
        sngNormal = sngNormal + rCell.Value
    End If
Next rCell

If sngNormal > 40 Then
    sngOT = sngOT + (sngNormal - 40)
    sngNormal = 40
End If

sngHoras = sngNormal + sngOT
Set rCell = rOT
rCell.Value = sngOT
Set rCell = Nothing
TotalHours = sngHoras

End Function
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error “Error definido por la aplicación u objeto” ocurre generalmente cuando hay un problema con la referencia del objeto o el objeto al que se hace referencia no existe. En este caso, parece que puede haber un problema con la referencia de rango rOT, que se utiliza para establecer el valor de salida.

    Una posible solución podría ser verificar si rOT es un rango válido antes de intentar establecer su valor. Puede hacer esto usando la función IsError de la siguiente manera:

    Si no IsError(rOT) Entonces
        rOT.Value = sngOT
    Fin Si
    

    Este código solo intentará establecer el valor de rOT si no es un error. Puede reemplazar la línea rCell.Value = sngOT con este código y ver si resuelve el problema.

Comments are closed.