Buenas grupo,
llevo unos dias liado con una aplicación que ya empieza a desquiciarme,
os cuento:
En una hoja, tengo 24 columnas (D:AA) que equivalen a las 24 horas del
dia.
En otra celda tengo un valor que va cambiando cada minuto y ese valor se
va copiando en la celda y columna que le corresponda según la hora del
sistema.
Por ejemplo, si son las 11:18, se copiaría el valor en la celda nº18 de
la columna correspondiente a las 11 de la mañana.
El problema radica en que se ejecuta todo el proceso de forma correcta
excepto para las dos ultimas columnas:
- Columna Z y Columna AA
Estas dos columnas son ignoradas, no escribe nada en esas dos horas.
Creo que estoy metiendo la pata en las comparaciones que hago dentro del
procedimiento. A ver si alguien puede confirmar mi metedura de pata.
Os copio el procedimiento:
- inicio copya&paste
Private Sub Worksheet_Change(ByVal Target As Range)
Dim miHora
Dim minuto
Dim aux As String
miHora = Format(Time, "hh:mm AM/PM")
minuto = Minute(miHora)
If minuto = 0 Then
minuto = 60
End If
minuto = CStr(minuto)
If Intersect(Target, Me.[b63]) Is Nothing Then Exit Sub
With WorksheetFunction
If (miHora > #1:00:00 AM#) And (miHora <= #2:01:00 AM#) Then
If .CountA(Me.[d1:d60]) = 60 Then
Else
aux = "d" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #2:00:00 AM#) And (miHora <= #3:01:00 AM#) Then
If .CountA(Me.[e1:e60]) = 60 Then
Else
aux = "e" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #3:00:00 AM#) And (miHora <= #4:01:00 AM#) Then
If .CountA(Me.[f1:f60]) = 60 Then
Else
aux = "f" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #4:00:00 AM#) And (miHora <= #5:01:00 AM#) Then
If .CountA(Me.[g1:g60]) = 60 Then
Else
aux = "g" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #5:00:00 AM#) And (miHora <= #6:01:00 AM#) Then
If .CountA(Me.[h1:h60]) = 60 Then
Else
aux = "h" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #6:00:00 AM#) And (miHora <= #7:01:00 AM#) Then
If .CountA(Me.[i1:i60]) = 60 Then
Else
aux = "i" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #7:00:00 AM#) And (miHora <= #8:01:00 AM#) Then
If .CountA(Me.[j1:j60]) = 60 Then
Else
aux = "j" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #8:00:00 AM#) And (miHora <= #9:01:00 AM#) Then
If .CountA(Me.[k1:k60]) = 60 Then
Else
aux = "k" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #9:00:00 AM#) And (miHora <= #10:01:00 AM#) Then
If .CountA(Me.[L1:L60]) = 60 Then
Else
aux = "l" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #10:00:00 AM#) And (miHora <= #11:01:00 AM#)
Then
If .CountA(Me.[m1:m60]) = 60 Then
Else
aux = "m" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #11:00:00 AM#) And (miHora <= #12:01:00 PM#)
Then
If .CountA(Me.[n1:n60]) = 60 Then
Else
aux = "n" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #12:00:00 PM#) And (miHora <= #1:01:00 PM#) Then
If .CountA(Me.[o1:o60]) = 60 Then
Else
aux = "o" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #1:00:00 PM#) And (miHora <= #2:01:00 PM#) Then
If .CountA(Me.[p1:p60]) = 60 Then
Else
aux = "p" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #2:00:00 PM#) And (miHora <= #3:01:00 PM#) Then
If .CountA(Me.[q1:q60]) = 60 Then
Else
aux = "q" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #3:00:00 PM#) And (miHora <= #4:01:00 PM#) Then
If .CountA(Me.[r1:r60]) = 60 Then
Else
aux = "r" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #4:00:00 PM#) And (miHora <= #5:01:00 PM#) Then
If .CountA(Me.[s1:s60]) = 60 Then
Else
aux = "s" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #5:00:00 PM#) And (miHora <= #6:01:00 PM#) Then
If .CountA(Me.[t1:t60]) = 61 Then
Else
aux = "t" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #6:00:00 PM#) And (miHora <= #7:01:00 PM#) Then
If .CountA(Me.[u1:u61]) = 61 Then
Else
aux = "u" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #7:00:00 PM#) And (miHora <= #8:01:00 PM#) Then
If .CountA(Me.[v1:v61]) = 61 Then
Else
aux = "v" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #8:00:00 PM#) And (miHora <= #9:01:00 PM#) Then
If .CountA(Me.[w1:w61]) = 61 Then
Else
aux = "w" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #9:00:00 PM#) And (miHora < #10:01:00 PM#) Then
If .CountA(Me.[x1:x60]) = 61 Then
Else
aux = "x" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #10:00:00 PM#) And (miHora < #11:01:00 PM#) Then
If .CountA(Me.[y1:y60]) = 60 Then
Else
aux = "y" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
'--
' a partir de aqui no se ejecuta el codigo
'--
ElseIf (miHora > #11:00:00 PM#) And (miHora <= #12:01:00 AM#)
Then
If .CountA(Me.[z1:z60]) = 60 Then
Else
aux = "z" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
ElseIf (miHora > #12:00:00 AM#) And (miHora <= #1:01:00 AM#) Then
If .CountA(Me.[aa1:aa60]) = 60 Then
Else
aux = "aa" + minuto
Me.Range(aux).Value = Me.[b63].Value
End If
End If
End With
End Sub
- fin copya&paste
gracias anticipadas y Salu2!.
"los videojuegos no tienen ninguna influencia sobre los niños. Quiero
decir, si el Pac-Man hubiese
influenciado a nuestra generación, estaríamos todos corriendo en salas
oscuras, masticando píldoras
mágicas y escuchando músicas electrónicas repetitivas".
Kristian Wilson, Nintendo Inc., 1989
Leer las respuestas