Formato condicinal al cambiar valor

Hola amigo;
Me pregunto si alguna manera de darle un formato condicional a una celda, para que se aplique siempre que se modifique su contenido. ES decir, por ejemplo, si en la celda aparece la fecha "12-11-08", si se cambia esta fecha, ya se a por otra fecha o texto aparezca siempre en cursiva. No se si es posible realizarlos con el formato condicional o hay que tirar de macros o simplemente no es posible, aunque me cuesta crear que haya algo no posible en el excel... Ya me dirás cuando puedas. Gracias.

1 respuesta

Respuesta
1
Para poder validar fechas para el Formato Condicional se tiene que utilizar el valor de la fecha, me refiero a que para Excel esa fecha vale 39764 en Formato General. Cuando haces el Formato Condicional tienes que ponerlo de esta forma escogiendo la opción de Fórmula, no de Valor de Celda:
=$A$1<>39764
En el Formato Condicional puedes escoger la Cursiva, Color de Celda y otros atributos.
[email protected]
Uy.. no me explique bien, perdona: Te puse el ejemplo de una fecha, pero igual puede haber una fecha como un texto, el caso es que siempre que se modifique el primer valor que se ha puesto en la celda, quisiera que se cambiara el formato a cursiva. Es posible o estoy pidiendo un milagro... Gracias.
Se supone que vamos a valuar en base a algo, aunque sea texto, qué texto es, porque si no especificas el tipo de cambio y se hace general con una macro, nunca verías los cambios. Básate en la fórmula para que evalúes el Texto, Función, Fecha, Condición u otros.
[email protected]
El problema es que jamas puedo saber cual va a ser el primer valor que haya en la celda, pueden ser infinitos y no nos podemos basar en ninguna lista. Igualmente el nuevo valor modificado también pueden ser muchos y tampoco tenemos lista. ¿Imagino qué para hacer esto habría que tirar de macros no? La verdad es que no veo nada para hacerlo en el formato condicional de excel. Si hay que tirar de macros, lo dejaremos porque será mucho lio. Ya me dirás cuando puedas. Mil gracias y Saludos
En ese caso yo sugeriría que llevaras el cambio en Comentarios. Esto se haría por medio de un código que va en el evento de cambio de dato en la hoja. Aquí te dejo el código y espero te sirva. Lo que hace es que cada vez que hay un cambio en cualquier celda, ese cambio lo almacena en el comentario que corresponde a esa Celda. Ese comentario se inserta de forma automática.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim cell As Range
Dim OldText As String, NewText As String
If CheckBox1 Then
For Each cell In Target
With cell
On Error Resume Next
OldText = .Comment.Text
If Err <> 0 Then .AddComment
NewText = OldText & "Cambiado a " & cell.Text & _
" por " & Application.UserName & " el " & Now & vbLf
.Comment.Text NewText
.Comment.Visible = True
.Comment.Shape.Select
Selection.AutoSize = True
.Comment.Visible = False
End With
Next cell
End If
End Sub
Private Function HasComment(r) As Boolean
Dim x As String
HasComment = False
On Error Resume Next
x = r.Comment.Text
If Err = 0 Then HasComment = True
End Function
Te lo pongo de este modo ya que no tienes una forma lógica y standard para evaluar.
[email protected]
Hola amigo, he pegado tu código en un modulo nuevo de visual basic, como si fuera una macro más pero debe haber algo que no hago bien, ya que no veo los resultados, tal vez no lo haya pegado en el sitio correcto... cuando me dices que lo debo pegar en el evento del cambio de dato de la hoja, no entiendo bien donde te refieras...
Definitivamente lo haces mal. Tienes que entrar en VBE, una vez ahí buscas la hoja (en la parte izquierda) en la cual quieres el código. Presionas doble click sobre ella y te aparecerá una ventanita, en la parte superior donde dice General das click y seleccionas Worksheet. Luego en la parte superior, a la derecha de donde decía General, das click y escoges Change, ahí pegas el código a partir de donde dice Dim hasta End If.
Después pegas la otra parte desde donde dice Private Function hasta End Function.
[email protected]
Hola amigo, perdona mi torpeza pero sigo sin ver resultados, no se me crea ningún comentario cuando modifico el valor de la celda. He intentado seguir tus pasos al pie de la letra pero seguro que hay algo que estoy haciendo mal.
Lo primero que pego es la parte desde Din cell hasta end if y en los ventanitas de arriba aparece worksheet y Change. Pero cuando pego la segunda parte desde Private Function en las ventanitas de arriba aparece General y HasComment y esto no hay manera de cambiarlo. No se si estará ahí el error...
Gracias por tu ayuda
después del End Sub tienes que copiar desde Private Function hasta End Function.
[email protected]
Hola amigo; He revisado y diría que estoy haciendo todo lo que me dices paso a paso pero no se me crea ningún comentario cuando escribo en una celda. No se que más hacer, seguramente me falte alguna tontería pero por más que miro no la encuentro...
Quería ver el resultado del código para ver si me servía, pero por lo que entiendo sería así: si escribo en una celda que tenga datos, los nuevos datos se pondrán en los comentarios de la celda y no estarán visibles en el contenido de la celda, serán los datos iniciales los que permanezeran visibles.
Si el funcionamiento del código es como te he descrito, no me acabaría de servir porque lo que me interesa es que se mantengan visibles los últimos datos introducidos y los datos iniciales serían los que irían al comentario de la celda. Tampoco me interesa hacerlo sobre toda una hoja, sino solo sobre un rango determinado de la hoja.
Bueno en conclusión,
1.-Algo hago mal que no se ejecuta el código
2.-No se si me servirá, si he entendido bien el funcionamiento no me serviría
3.- Si pudiera funcionar como el ultimo párrafo me servía y mucho ( si consigo hacerlo ejecutar...)
Lo siento esta pregunta se nos esta haciendo más larga de lo habitual, obviamente es por mi falta de conocimiento, tengo que estudiar más... Gracias por tu tiempo.
Mejor escríbeme para enviarte un archivo de modelo y que lo modifiques a tu gusto.
[email protected]
Ya te lo envíe. Gracias.
Ya te envíe una posible solución para que la adaptes a tus necesidades. Por favor evalúa para continuar con otras preguntas.
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas