Otra Pregunta sobre Private Sub Worksheet_Change

28/07/2012 - 22:25 por titopose | Informe spam
¡ Hola !
En el ejemplo de la pregunta anterior sobre Private Sub Worksheet_Change todo funciona bien.(incluído el cambio sugerido por Pedro).
Pero, siempre hay un pero, cuando sobre el rango target (columna e) se teclea la barra espaciadora, da error y me hace saltar un texbox de alerta que tengo a ese efecto.
Me pregunto si tecleando "enter" o entrando "cero" no me da, error, por que la barra espaciadora si?, y como puedo hacer para evitarlo?.
Gracias!
 

Leer las respuestas

#1 titopose
29/07/2012 - 04:26 | Informe spam
Pedro F. Pardo escribió el 29/07/2012 00:10 :
On Saturday, 28 July 2012 21:27:09 UTC+1, titopose wrote:
¡ Hola !

En el ejemplo de la pregunta anterior sobre Private Sub Worksheet_Change todo

funciona bien.(incluído el cambio sugerido por Pedro).

Pero, siempre hay un pero, cuando sobre el rango target (columna e) se teclea

la

barra espaciadora, da error y me hace saltar un texbox de alerta que tengo a

ese

efecto.

Me pregunto si tecleando "enter" o entrando "cero" no me
da,

error, por que la barra espaciadora si?, y como puedo hacer para evitarlo?.

Gracias!




El error lo da porque Cantidad es una variable numérica, excel espera un
número pero si escribes un espacio al intentar asignar un espacio en
blando a cantidad>>> Error.

Si estoy en lo cierto esto no solo ocurre con la barra espaciadora, imagino que
también ocurrirá al escribir cualquier texto, una letra
cualquiera, o un nombre, ¿no es así?

La forma de solucionarlo depende que cómo quieras considerar un espacio
en blanco. ¿Quieres que en la otra celda aparezca el número 0?
¿Que no aparezca nada? ¿Y si alguien escribe por error un texto?
La letra O mayúscula en lugar del cero por ejemplo: '1O5' << eso
de ahí es una O mayúscula :-)

Esto se podría arreglar en la macro añadiendo un control para
asegurarnos que solo se puedan escribir números y que cualquier otra
cosa la considere vacía y por tanto en la otra celda (Columna D) no
aparezca nada.
añadiendo esta línea en la macro:
If Val(Target.Value) = 0 Then ActiveCell.Offset(-1, -1).Value = "":
Exit Sub

justo debajo de la línea del IsEmpty(Target)


O también lo puedes controlar mediante Validación de Datos, sin
necesidad de alterar la macro. Seleccionando la columna entera y restringiendo
la entrada solo a números. Para que nadie escriba ningún texto en
esa columna ;-)


Saludos,
Pedro


Fue muy concisa y esclarecedora tu explicación.
Usé la validación (decimales, excel 2002) para ambas columnas pero anoté la forma de hacerlo con el códogo en la macro por si me sirve de futuro.
Gracia Pedro.
Saludos

Preguntas similares