y sigo con lo de la fecha

12/07/2006 - 06:00 por LUIS DANNY SALAS | Informe spam
Que pena , le quiero sacar el jugo a este foro y a mis amigos que responden.

Lo que he querido desde un principio es evitar que un usuario devuleva la
fecha del windows, o por lo menos persuadirlo de que lo haga.

estableci el siguiente codigo en un modulo:

Private Sub Auto_Open()
Application.ScreenUpdating = False
Sheets("Hoja1").Select
Range("A1").Select
Range("A1").Value = Date
Range("A1").Select
Selection.EntireRow.Insert
End sub

Este codigo hace que cada vez que se habra el archivo se vaya anotando la
fecha de manera que con el tiempo tendre en el archivo una gran columna
llena de fechas una en cada celda que si el usuario no ha modificado la
fecha en la barra de herramientas de windows sera una columna con fechas
progresivas cada vez mayores(o por lo menos iguales si se abre vairas veces
en un dia) de arriba para abajo:


A1 7 de julio
A2 6 de julio
A3 5 de julio
A4 4 de Julio
A5 3 de julio

El asunto es que nesesito una macro o codigo que mande un mensaje en el
momento en que esa progresion se rompa , por que si mi usuario devuleve a
una fecha anterior el windows ya la secuencia de la columna se interrumpira
y la fecha mas reciente sera menor que las anteriores


asi esta:

A1 7 de julio
A2 6 de julio
A3 5 de julio
A4 4 de Julio
A5 3 de julio

pero si el usuario baja la fecha y pone en el windows( en el cuadro date /
time properties de la barra de herramintas) que hoy sea la fecha de 3 de
julio al abriri el archivo la columna quedaria asi

A1 3 de julio
A2 7 de julio
A3 6 de julio
A4 5 de julio
A4 4 de Julio
A6 3 de julio

entonces ya no habria una secuencia correcta en la columna(no importa que
haya fechas iguales lo que no puede suceder es que alguna de las de arriba
sea menor que la anterior), aqui es donde quiero que aparaezaca un cuadro
diciendo algo asi " si sigues cambiando la fecha del sistema ,este programa
dejara de funcionar y se borrara tu disco duro"

Ademas podria introducir una formula que haga variaciones en todo el libro
dejandolo inutilizable si se cumple la condicion:
"La columna de fechas no esta en un orden correcto", solo que no se como
expresar esto ni en una macro ni en una formula.

Trate de usar este:

Private Sub Worksheet_Calculate()
If [A1] < [A6] Then _
MsgBox "texto del mensaje"
End Sub


pero no se produce el mensaje cuando se pone una fecha menor al principio de
la columna.
Tal vez alguien me pueda ayudar gracias.
 

Leer las respuestas

#1 Héctor Miguel
12/07/2006 - 04:59 | Informe spam
hola, Luis !

1) [me parece que]... es un poquitn... 'agresivo' el 'mensaje' que quieres mandar a un usuario... 'jugueton' [con la fecha del sistema] :D

2) prueba con algo +/- parecido a lo siguiente:
-> a) puedes usar una hoja 'oculta' [con la propiedad .Visible establecida en xlSheetVeryHidden en la ventana de propiedades]
-> b) en un modulo de codigo 'normal', copia/pega las siguientes lineas:
Option Private Module
Sub Revisar_fechas()
With Worksheets("oculta").Range("a" & Rows.Count).End(xlUp)
If Now < .Value Then
MsgBox "La fecha 'del sistema'..." & vbCr & _
"NO se corresponde con mis registros !!!" & vbCr & _
"Asi que ahora... procedere a... ???", , "Haciendo trampa ?"
Else
.Offset(1) = CDbl(Now)
End If
End With
End Sub
-> c) la macro anterior puedes 'llamarla' desde cualquier otro 'evento' donde necesites 'monitorear' cambios de fechas
[p.e.] en el modulo de codigo del libro, en el evento de apertura:
Private Sub Workbook_Open()
Revisar_fechas
End Sub

3) NO 'olvides' que los eventos pueden ser 'inhabilitados' por el usuario [o por otros codigos 'maliciosos'] p.e.
a) manteniendo pulsada la tecla {mayus} 'mientras' se abre 'tu archivo' [aun dandole permiso de usar las macros] :-((
b) te aseguro que NO es 'mi intencion' parecerte un 'aguafiestas' [o un pesimista], sin embargo...
[existen un 'sin-numero' de 'alternativas' para 'brincar' ESTE tipo de 'protecciones']

4) si no has tenido tiempo de revisar los enlaces 'sugeridos' en conversaciones anteriores, te los paso nuevamente:
si te decides por 'darle mas duro' al aprendizaje del vba... revisa estas conversaciones: -> http://tinyurl.com/qn7p8



5) este 'asunto' [elaborar un 'sistema de proteccion... a prueba de balas'] tiene todavia bastante 'tela de donde cortar' :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
Lo que he querido desde un principio es evitar que un usuario devuleva la fecha del windows, o por lo menos persuadirlo de que lo haga.
estableci el siguiente codigo en un modulo:
Private Sub Auto_Open()
Application.ScreenUpdating = False
Sheets("Hoja1").Select
Range("A1").Select
Range("A1").Value = Date
Range("A1").Select
Selection.EntireRow.Insert
End sub
... de manera que con el tiempo... si el usuario no ha modificado la fecha en... windows sera una columna con fechas progresivas
...nesesito una macro o codigo que mande un mensaje en el momento en que esa progresion se rompa [...]
... aqui es donde quiero que aparaezaca un cuadro diciendo algo asi
"si sigues cambiando la fecha del sistema, este programa dejara de funcionar y se borrara tu disco duro" [...]

Preguntas similares