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!

Preguntas similare

Leer las respuestas

#1 Pedro F. Pardo
29/07/2012 - 00:10 | Informe spam
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
Respuesta Responder a este mensaje
#2 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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida