Hola Xyon:
Tu lo has modificado así:
Código:
If Dia = "vie" And Hora >= CDate("21:55:59") Then
ComoEsta(9) = "CERRADA"
ElseIf Dia = "dom" And Hora >= CDate("20:48:59") Then
ComoEsta(9) = "ABIERTA"
End If
El problema que tienes en este código es que, a una rutina de uso GENERICO, le has indicado un condicionante propio de una LOCALIDAD
O sea, cualquier llamada a la misma efectúa la comparación y modifica ComoEsta(9) cuando realmente sólo debería hacerse cuando recibe el valor de 9, una manera de solucionarlo sería comprobando el valor Index antes de la comparación que haces.
Voy a intentar explicártelo para que lo comprendas y lo puedas tener claro para próximas ocasiones que es lo importante:
Como sabes, CloseOpen, recibe un Label para devolver un estado. Cuando una funcion recibe un OBJETO como parámetro, TODAS las propiedades de este objeto están disponibles dentro de la misma, Tag, Index, BackColor, etc, .. así pues, en caso de ser necesario como ahora, puedes hacer las comparaciones oportunas, podrías por ejemplo añadirle algo así:
Código:
' Si estoy comprobando el 9
IF LabelHora.Index = 9 Then
If Dia = "vie" And Hora >= CDate("21:55:59") Then
CloseOpen = "CERRADA"
ElseIf Dia = "dom" And Hora >= CDate("20:48:59") Then
CloseOpen = "ABIERTA"
End If
End If
IMPORTANTE: Fíjate además que estoy modificando el valor devuelto y no la etiqueta que va a contener este valor devuelto ya que la misión básica de una función es devolver un valor y no modificar datos externos a ella.
Si la comparación de día y hora es correcta tal como la tienes planteada, ya que ignoro los condicionantes, debería funcionar.
Saludos