REPONER Valor de 1 CELDA, tras borrarlo....

13/08/2004 - 00:36 por lamarse | Informe spam
Gola Hector (de nuevo).

A ver, vamos a redefinir mi consulta:

¿Cómo reponer el valor de una celda (E4) tras borrarlo?

Tengo que E4Ô. Pero borro manualmente el contenido de E4 y sin
embargo no quiero que E4 deje de ser igual a D4. En el momento en que
yo borro el contenido de E4 automáticamente D4 pasa a tener otro
contendio. En este caso, la reacción en D4 al borrar el contenido en
E4 es simplemente quedarse vacia.

Asi pues, ¿Cómo borro (manualmente, con el teclado, claro) el
contenido de E4 y que se quede (o reaparezca) el "Ô"?


Gracias a todos por vuestra ayuda (la verdad es que estoy aprendiendo)
Gracias

Victor

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/08/2004 - 06:40 | Informe spam
hola, victor !

... redefinir mi consulta: ... ¿Como reponer el valor de una celda (E4) tras borrarlo?
... Tengo que E4Ô ... borro manualmente ... E4 ... que se quede (o reaparezca) el "Ô"?



usando el evento '_change' en el modulo de codigo de 'la hoja' y 'segun' lo que [realmente] deseas...
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
[ dentro de este evento pones el codigo que consideres mas apropiado ]
End Sub

1.- si solo quieres 'evitar' que se borre el contenido de 'E4'...
If Target.Address = "$E$4" And IsEmpty(Target) Then Application.Undo

->podras modificar el contenido de 'E4' mas no dejarlo 'vacio'<-

2.- si 'D4' 'formaba parte' de un rango de celdas seleccionado...
y quieres 'asegurarte' que 'E4' tenga SIEMPRE la formula 'Ô'...
If Not Intersect(Target, Range("e4")) Is Nothing _
And Range("e4").Formula <> "Ô" _
Then Range("e4").Formula = "Ô"

3.- [puedes combinar, modificar, adaptar, etc. con las propuestas anteriores] :))

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#2 lamarse
13/08/2004 - 19:44 | Informe spam
Hola Hector (1+time)

La cosa no me ha funcionado bien, pues han aparecido más problemas (ya
que no lo explico todo (por no liarme y hacerlo muy pesado), y bueno..
pues no funcionaba. Al final lo he solucionado de otro modo, y he
cambiado la idea. He creado un boton que simplemente pulsandolo me
cambia RANGE(C4:C33)=9 y eso me borra el contenido de RANGE(E4:E33) y
el "Ä" se mantiene.

Ahora estoy por 2 cosas mas:

1.- RANGE(E4:E33) ahora contiene un valor (recuerda "Ä") y me
gustaria que no se pudiera borrar por nada del mundo lo que dice y hay
en RANGE(E4:E33). O sea, que esa columna de celdas sea simplemente NO
EDITABLE (y que su valor cambie en funcion de RANGE(C4:C33)).

2.- Tengo una MACRO que me cambia el formato condicional de
RANGE(E4:E33), segun su contenido (tema colores y con 6 condiciones).
Hasta ahora me funcionaba muy bien, y se ejecuta AUTOMATICAMENTE al
cambiar el contenido de E4:E33 (tal que asi):

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("E4:E33")
If Not Application.Intersect(KeyCells, Range(Target.Address))
_
Is Nothing Then
CLASE
'MsgBox "Cell " & Target.Address & " has changed."
End If
End Sub

Yo, pensaba: (simplemente, si ahora quiero que funcione cuando cambia
RANGE(C4:C33), pues cambio ahi donde dice SET KeyCells = Range
("E4:E33"), y le cambio la "E" por la "C". Pero... PROBLEMA: Al hacer
esto: Cada vez que selecciono cualquier celda en EXCEL, se me queda el
RATON pensado 5s!!. La verdad es que esto lo convierte en algo
inviabe, pues mi PC es un P4-3Ghz-2GB-400GB, y donde ha de funcionar
este XLS es en máquinas a 300Mhz!! No comprendo la razon de esto (pues
entiendo que simplemente revisa la columna C4:C33 en vez de E4:E33
(que lo hacia muy bien). En fin. Esta es mi 2ª problemática. ¿Cómo
consigo que me ejecute la MACRO (CLASE) cada vez que C4:C33 haga un
cambio? (claro, sin quedarse el PC pensando cada vez que muevo el
raton!!)


Gracias por la ayuda 1+TIME.

Victor
Respuesta Responder a este mensaje
#3 Héctor Miguel
14/08/2004 - 07:30 | Informe spam
Hola Hector (1+time)


=> hola, victor [11again] ;)

... han aparecido mas problemas (ya que no lo explico todo por no liarme y hacerlo muy pesado) [...]



=> entonces... vamos a [o trataremos de] 'resolverlo'... como se vayan 'presentando' las situaciones :D

1.- RANGE(E4:E33) ... me gustaria que no se pudiera borrar por nada del mundo [...]



=> mientras NO se utilice codigo para modificar 'ese' [o cualquier otro] rango 'protegido'...
'evita' que el usuario [al cambiar de seleccion] 'se posicione' dentro del rango +/- con lo siguiente...
en el modulo de codigo de 'la hoja' ==Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("e4:e33")) Is Nothing Then Target.Offset(, 1).Select
End Sub
¨¨¨¨¨¨¨¨¨¨¨¨
2.- Tengo una MACRO que me cambia el formato ... de RANGE(E4:E33) [...]
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("E4:E33")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then CLASE
End Sub
... pensaba: (simplemente ... donde dice SET KeyCells ... cambio la "E" por la "C".
... Al hacer esto: Cada vez que selecciono cualquier celda ... se me queda el RATON pensado 5s!! [...]



=> si 'sucede' con la 'simple' seleccion de celdas en la hoja... [probablemente]
hay [otras] acciones [como 'loops'] dentro del evento '_selectionchange' de la hoja [?]
[pero... como 'hay cosas que NO has comentado'...]

... 2ª problematica. ¿... que me ejecute ... (CLASE) cada vez que C4:C33 haga un cambio?
(claro, sin quedarse el PC pensando cada vez que muevo el raton!!)



=> [en principio] el codigo que expones en el punto 2 [me parece que] es.. 'apropiado' ;)
[yo] solo 'evitaria' [en la medida de lo posible] el uso de la instruccion =>Set< seria 'bueno' si comentas las acciones que realizan...
- la macro clase ???
- el evento '_selectionchange' ???

saludos,
hector.
Respuesta Responder a este mensaje
#4 lamarse
14/08/2004 - 12:29 | Informe spam
Hola Hector de nuevo.

Gracias AGAIN. Te cuento:

Ya esta solventado. La 1ª problemática funciona 100% rebotando el
ratón de la columna a la siguiente (muy ingenioso ;-)
La 2ª problemática.. era culpa del comndo FOR NEXT. Tenia :

For fila = 4 To 33
If Range("E" & fila) = "" Then Range("C" & fila) = 9
Next

Pero el caso es que ahora (al cambiar la política) ya no se posa uno
en la columna E, asi que, al anular esta acción, problema resuelto.
Ahora tengo esto:

Private Sub CommandButton2_Click()
For borr = 4 To 33
Range("C" & borr) = 9
Next
CLASE
End Sub

Que como ves, es el botón para poner la columna E4:E33 a cero. Cuando
ejecuto este botón realmente se pone a "pensar" los 5s (tambien), (o
sea, q el problema es el FOR NEXT ). ¿Se te ocurre una forma mejor de
conseguir que ejecute una instrucción concreta pero por cada celda de
la columna (1 a 1), sin que sea con FOR NEXT, o que simplmente no me
demore el RATÓN esos 5s (en un P4-3Ghz)?
DIcho de otro modo: Tengo que la columna C4:C33 quiero que cambie su
valor (cada celda de la misma) a 9 dándole al botón. ¿alguna idea de
hacerlo que no demore esos 5s?


Gracias 1+Time (como dice la canción que estaba escuchando ahora
mismo) :-)

Victor (que no soy el otro Victor que veo tambien por las News, soy el
de minusculas, En fin, VDP seria mejor) :D
Respuesta Responder a este mensaje
#5 Héctor Miguel
15/08/2004 - 04:24 | Informe spam
hola, victor [VDP] :))

Ahora ... DIcho de otro modo: ... que la columna C4:C33 ... cambie ... a 9 dandole al boton.
¿alguna idea de hacerlo que no demore esos 5s?



[creo que] la manera mas 'rapida' es...
-> 'meterle' el 9 a la primer celda del rango y... copiar 'al resto' de las celdas del rango [p.e.]...
Range("c4") = 9
Range("c4").Copy Range("c5:c33")
... [o usando la notacion 'abreviada'] ...
[c4] = 9
[c4].Copy [c5:c33]

=> solo toma nota que el metodo 'copy' de esa forma... 'se va con todo' [formatos, validaciones, etc.]

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida