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
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ónIsError
de la siguiente manera:Este código solo intentará establecer el valor de
rOT
si no es un error. Puede reemplazar la línearCell.Value = sngOT
con este código y ver si resuelve el problema.