SOBRE FORMATO CONDICIONAL

02/03/2007 - 16:30 por Dorian | Informe spam
hola a todos !!

vuelvo una vez mas.. (y van ) a la fuente del conocimiento ...

la pregunta es simple:

tengo una celda (B1) con formato condicional, lo que necesitaría es que en
la celda contigua (C1) se almacenara la fecha en la que cambió la condición
(y el formato, logicamente) y que sólo se modifique cuando vuelva a cambiar
el formato de la celda B1

es posible hacerlo mediante código?

alguien me podría dar una mano por favor?

anticipadamente muchas gracias por el tiempo que le dediquen a mi planteo

saludos,

dorian+

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
03/03/2007 - 22:12 | Informe spam
hola, Dorian !

algunas cuestiones que me preguntas: es una suma que no da resultados negativos
y la suma se haya dentro del mismo libro (esto es necesario hacerlo en 4 hojas)
el inconvniente que se me ha presenatdo es que cambia la fecha (la actualiza) al abrir el libro al dia siguiente :((
se puede evitar de alguna forma ?



una forma pudiera ser 'moviendo' las variables a 'publicas' -> declaradas en un modulo de codigo 'estandar/general/normal/ordinario/...'
estableciendo la variable de comparacion 'anterior' [igual que la actual] en el evento '_open' del libro
PERO.. -> por cada 'eventualidad/suma/hoja/...' OJO en la instruccion del evento en el ejemplo que sigue :))
'el resto' del codigo seguiria siendo +/- el mismo [p.e. para el caso de la propuesta anterior]...

1) en el modulo estandar:
Public Anterior As Byte, Nuevo As Byte

2) en el modulo del libro [ThisWorkbok]
Private Sub Workbook_Open()
Anterior = Evaluate("match(sum(hoja1!a1:a3),{0,8,10}*1000+1)")
End Sub

3) en el modulo de 'la hoja'
Private Sub Worksheet_Calculate()
Nuevo = Evaluate("match(sum(a1:a3),{0,8,10}*1000+1)")
If Nuevo = Anterior Then Exit Sub
Anterior = Nuevo
Me.Range("c1") = Now
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#7 Dorian
04/03/2007 - 00:19 | Informe spam
hola héctor,

hoy estoy con escasa actividad sináptica :((

no entiendo no entiendo esta parte de tu mail:

una forma pudiera ser 'moviendo' las variables a 'publicas' -> declaradas en
un modulo de codigo 'estandar/general/normal/ordinario/...'
estableciendo la variable de comparacion 'anterior' [igual que la actual] en
el evento '_open' del libro
PERO.. -> por cada 'eventualidad/suma/hoja/...' OJO en la instruccion del
evento en el ejemplo que sigue :))
'el resto' del codigo seguiria siendo +/- el mismo [p.e. para el caso de
la propuesta anterior]...

:((

me la podrías explicar un poco mas claramente por favor?

desde ya muchas gracias

saludos

dorian+





"Héctor Miguel" escribió en el mensaje
news:
hola, Dorian !

algunas cuestiones que me preguntas: es una suma que no da resultados
negativos
y la suma se haya dentro del mismo libro (esto es necesario hacerlo en 4
hojas)
el inconvniente que se me ha presenatdo es que cambia la fecha (la
actualiza) al abrir el libro al dia siguiente :((
se puede evitar de alguna forma ?



una forma pudiera ser 'moviendo' las variables a 'publicas' -> declaradas
en un modulo de codigo 'estandar/general/normal/ordinario/...'
estableciendo la variable de comparacion 'anterior' [igual que la actual]
en el evento '_open' del libro
PERO.. -> por cada 'eventualidad/suma/hoja/...' OJO en la instruccion
del evento en el ejemplo que sigue :))
'el resto' del codigo seguiria siendo +/- el mismo [p.e. para el caso
de la propuesta anterior]...

1) en el modulo estandar:
Public Anterior As Byte, Nuevo As Byte

2) en el modulo del libro [ThisWorkbok]
Private Sub Workbook_Open()
Anterior = Evaluate("match(sum(hoja1!a1:a3),{0,8,10}*1000+1)")
End Sub

3) en el modulo de 'la hoja'
Private Sub Worksheet_Calculate()
Nuevo = Evaluate("match(sum(a1:a3),{0,8,10}*1000+1)")
If Nuevo = Anterior Then Exit Sub
Anterior = Nuevo
Me.Range("c1") = Now
End Sub

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

Respuesta Responder a este mensaje
#8 Héctor Miguel
04/03/2007 - 01:26 | Informe spam
hola, Dorian !

no entiendo no entiendo esta parte de tu mail:
una forma pudiera ser 'moviendo' las variables a 'publicas'
-> declaradas en un modulo de codigo 'estandar/general/normal/ordinario/...'
estableciendo la variable de comparacion 'anterior' [igual que la actual] en el evento '_open' del libro
PERO.. -> por cada 'eventualidad/suma/hoja/...'
OJO en la instruccion del evento en el ejemplo que sigue :))
'el resto' del codigo seguiria siendo +/- el mismo [p.e. para el caso de la propuesta anterior]...


me la podrías explicar un poco mas claramente por favor? [...]



no se si la siguiente [intento de] 'explicacion' al porque de los comentarios anteriores...
te vaya a servir... o te deje mas confundido [espero que te sirva] :))

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

1) en tu anterior consulta mencionas que el procedimiento lo necesitas para 4 hojas [supongo habra mas a futuro ?]...
entonces, comienzan a ser importantes algunos 'factores/detalles/...' como p.e.:
a) los nombres de las hojas
b) si una variable 'unica' podria controlar movimientos en varias hojas -???- [etc. etc. etc.]

2) para lo de 'mover' la declaracion de las variables a un modulo estandar... esta el primer punto del ejemplo:
-> en el modulo estandar:
Public Anterior As Byte, Nuevo As Byte

3) para evitar que un re/calculo en la apertura del libro... 'igualamos' UNA variable [Anterior] a su comparacion [Actual]
-> en el modulo del libro [ThisWorkbok]
Private Sub Workbook_Open()
Anterior = Evaluate("match(sum(hoja1!a1:a3),{0,8,10}*1000+1)")
End Sub
-> OJO: 'nota' que en la instruccion Evaluate SI se incluye el nombre de la hoja en la constante de la funcion sum(hoja1!.
debido a que en el procedimiento '_calculate' de una hoja no se esta requiriendo 'el nombre' de la hoja [se asume la activa]

4) el resto de las instrucciones en el modulo de codigo de 'la hoja' permanece +/- igual:
-> en el modulo de 'la hoja'
Private Sub Worksheet_Calculate()
Nuevo = Evaluate("match(sum(a1:a3),{0,8,10}*1000+1)")
If Nuevo = Anterior Then Exit Sub
Anterior = Nuevo
Me.Range("c1") = Now
End Sub

5) ahora... 'regresando' al punto 1 incisos a y b y en referencia al uso de la funcion 'Evaluate'...
a) el nombre de la hoja queda como 'constante' en el evento '_open' del libro [y no se requiere en el evento '_calculate' de cada hoja]
b) en los ejemplos de esta consulta... NO se contempla el uso de varias hojas 'a controlar' [ni el uso de variables para cada una]
c) podrias cambiar las instrucciones 'Evaluate' [p.e.] por las funciones 'mismas' de la aplicacion...
Application.WorksheetFunction.Match(... Application.WorksheetFunction.Sum(... etc.
-> donde puedes usar los argumentos de manera mas... 'transparente'
pasando los nombres y rangos de las hojas de la manera 'tradicional-vba'... Worksheets("hoja1").Range("a1:a3")
Respuesta Responder a este mensaje
#9 Héctor Miguel
08/03/2007 - 03:55 | Informe spam
hola, Dorian !

algo no debo estar haciendo bien al intentar abrir el libro me tira el mensaje:
"error 13 en tiempo de ejecucion" (no coinciden los tipos)
que estoy haciendo mal ?



puedes exponer los detalles que estoy 'suponiendo' en las propuestas ?
- la formula [para identificar el nombre de la/s hoja/s, la/s funcion/es que interviene/n y los rangos]
- la celda donde se utiliza 'la formula' [o si son varias celdas/formulas/hojas/...]
- el codigo y modulo que usas actualmente
[lo que no se vea desde este lado del mensaje] :))

saludos,
hector.
Respuesta Responder a este mensaje
#10 Dorian
08/03/2007 - 21:14 | Informe spam
estimado héctor,

algo no debo estar haciendo bien al intentar abrir el libro me tira el
mensaje: "error 13 en tiempo de ejecución" (no coinciden los tipos)

:(((

que estoy haciendo mal ?

me ayudas, por favor?

desde ya muchas gracias !!

un abrazo

dorian+





"Héctor Miguel" escribió en el mensaje
news:eycf$
hola, Dorian !

no entiendo no entiendo esta parte de tu mail:
una forma pudiera ser 'moviendo' las variables a 'publicas'
-> declaradas en un modulo de codigo
'estandar/general/normal/ordinario/...'
estableciendo la variable de comparacion 'anterior' [igual que la
actual] en el evento '_open' del libro
PERO.. -> por cada 'eventualidad/suma/hoja/...'
OJO en la instruccion del evento en el ejemplo que sigue :))
'el resto' del codigo seguiria siendo +/- el mismo [p.e. para el caso
de la propuesta anterior]...


me la podrías explicar un poco mas claramente por favor? [...]



no se si la siguiente [intento de] 'explicacion' al porque de los
comentarios anteriores...
te vaya a servir... o te deje mas confundido [espero que te sirva]
:))

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

1) en tu anterior consulta mencionas que el procedimiento lo necesitas
para 4 hojas [supongo habra mas a futuro ?]...
entonces, comienzan a ser importantes algunos 'factores/detalles/...'
como p.e.:
a) los nombres de las hojas
b) si una variable 'unica' podria controlar movimientos en varias
as -???- [etc. etc. etc.]

2) para lo de 'mover' la declaracion de las variables a un modulo
estandar... esta el primer punto del ejemplo:
-> en el modulo estandar:
Public Anterior As Byte, Nuevo As Byte

3) para evitar que un re/calculo en la apertura del libro... 'igualamos'
UNA variable [Anterior] a su comparacion [Actual]
-> en el modulo del libro [ThisWorkbok]
Private Sub Workbook_Open()
Anterior = Evaluate("match(sum(hoja1!a1:a3),{0,8,10}*1000+1)")
End Sub
-> OJO: 'nota' que en la instruccion Evaluate SI se incluye el nombre de
la hoja en la constante de la funcion sum(hoja1!.
debido a que en el procedimiento '_calculate' de una hoja no se esta
requiriendo 'el nombre' de la hoja [se asume la activa]

4) el resto de las instrucciones en el modulo de codigo de 'la hoja'
permanece +/- igual:
-> en el modulo de 'la hoja'
Private Sub Worksheet_Calculate()
Nuevo = Evaluate("match(sum(a1:a3),{0,8,10}*1000+1)")
If Nuevo = Anterior Then Exit Sub
Anterior = Nuevo
Me.Range("c1") = Now
End Sub

5) ahora... 'regresando' al punto 1 incisos a y b y en referencia al uso
de la funcion 'Evaluate'...
a) el nombre de la hoja queda como 'constante' en el evento '_open' del
libro [y no se requiere en el evento '_calculate' de cada hoja]
b) en los ejemplos de esta consulta... NO se contempla el uso de varias
hojas 'a controlar' [ni el uso de variables para cada una]
c) podrias cambiar las instrucciones 'Evaluate' [p.e.] por las
funciones 'mismas' de la aplicacion...
Application.WorksheetFunction.Match(...
Application.WorksheetFunction.Sum(... etc.
-> donde puedes usar los argumentos de manera mas... 'transparente'
pasando los nombres y rangos de las hojas de la manera
'tradicional-vba'... Worksheets("hoja1").Range("a1:a3")

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida