poner "0" en vez de "vacio"

05/11/2006 - 02:30 por MyVi | Informe spam
Buenas chicos...

A ver si me podeis ayudar con esto.


Tengo unas celdas que no pueden estar nunca vacias. Inicialmente tienen
un valor "0" (aunque esta activo el ocultar ceros, asi que no se ve
directamente y parece que las celdas esten vacias), de ahi se introduce
un nº de cinco digitos (lease 26537).
Hasta aqui todo bien. El problema viene cuando el usuario se equivoca y
elimina dicho nº de la celda y la deja vacia. Aqui aparece un #VALUE!
y me desmonta toda la hoja.

¿Cómo hariais para, al eliminar el valor de la celda, en vez de
quedarse en "vacio" se pusiera un "0" en su lugar?
Bueno, o dicho de otro modo, ¿como podriamos hacer para que dicho
"vacio" no entorpeciera el correcto cálculo de las demás celdas, y
por consiguiente, no se mostrara este #VALUE! y siguiera calculando
normalmente?

Si conseguimos que "vacio"="0" siempre, ya lo tengo arreglado.
Si teneis que saber cómo hago los cálculos en la hoja os diré que
tengo formulas asi:

=(SUMPRODUCT((D7:D56="B2B/PROFESIONAL")*(E7:E56="SI")))+(SUMPRODUCT((M7:M56="B2B/PROFESIONAL")*(N7:N56="SI")))

... y sino recuerdo mal... tambien algo de código (aunque ahora mismo
tengo el office 2007, y, sinceramente, no sé como mirarlo para
recordar... :(


ANTES DE TERMINAR, una pregunta mas.

¿Cómo puedo conseguir que se ejecute un código al salir de una
celda? Más concretamente. En una celda (la del "0"), tras cambiar el
valor "0" que hay por defecto y poner un nº de XX.XXX, como puedo
ejecutar un código que lo que hace es poner una palabra u otra en la
celda siguiente (en funcion del primer díjito del nº entrado)?.

Como no he sabido cómo hacerlo, he puesto un boton transparente (creo
que era un boton, pero repito que con el 2007 no sé como ver la barrá
de herramientas y la flecha para poder seleccionar y ver sus
propiedades...) que al pulsarlo ejecuta dicha acción, pero me sucede
que no me es muy práctico, ya que yo soy el único que realmente sabe
utilizarlo. El usuario (quien realmente me interesa que lo use) no
tiene idea de cómo proceder.

Gracias

Voy a seguir investingando a ver si averiguo como conseguir estas cosas
que digo en el 2007 que no encuentro.

Gracias de nuevo.

Preguntas similare

Leer las respuestas

#11 Tux
06/11/2006 - 00:13 | Informe spam
MyVi escribió:
Hola Hector.

Gracias por tu soporte, pero al final queda resuelto el que siempre
haya un "0" o MAYOR (o sea, nunca vacio) las columnas B y K con este
código:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Target = "" Then Target = 0 ' aqui evita celda vacia para
columna B
Else
If Target.Column = 11 Then
If Target = "" Then Target = 0 ' aqui columna K
Else

End If
End If

End Sub

Y funciona muy bien (tal cual lo necesito), simplemente el campo (o
campos de dichas columnas) tienen o 0 o algun nº superior a 0, y si
borro su contenido me reemplaza el VACIO por un 0 (tal cual
necesitaba).


Lo que ahora me queda pendiente es el ejecutar una MACRO tras salir de
una celda. ¿Ideas?
Con tu punto 5 parece como si me dijeras algo al respecto, pero me lio
cuando me hablas de evitar el 0 y tal (haciendome creer que no habla
sobre esto).

Eso es lo facil. Para complicarlo un poco más es que: al salir de la
celda, analice el nº de 5 digitos que hay (pues ha de haber uno o sino
será 0 y el resultado final seria NADA) y segun su primer digito (1,
2, 3, 4 o 5) escriba en la celda siguiente (a la abandonada, o sea, que
si pongo el nº 1X.XXX en la celda B7 pues en la celda C7 me pondrá la
palabra MONTAJES, y la lógica a seguir (qué palabra poner segun qué
primer digito encuentra) es esta:

1 = FERIAS
2 = MONTAJES
3 = CONTRATOS
.
.
.
.
Cuando se diera el caso de que al salir de la celda (B7) hubiera el "0"
lo que se escribiria en C7 sería VACIO (borrando cualquier palabra que
hubiera si fuera el caso).

Pero ya digo, con que alguien me diga COMO EJECUTAR UNA MACRO AL SALIR
DE UNA CELDA, ya tengo bastante.

Gracias




Hola a todos :-)

Ahhhhhhhh vale lo que Hector quiere decirnos es que con esta formula:

=SI(B7>0;INDICE({"ferias"\"montajes"\"contrato
mantenimiento"\"intervencion"\"garantia"\"reintervencion"};IZQUIERDA(B7));"")

tendrias el resultado deseado para la columna "C" puesto que por codigo
como que no, como que llevo rato intentandolo hacer y no hay manera :-S

Y con esta otra tambien tendrias el mismo resultado:
=si(b7>0,indice($a$1:$a$6,izquierda(b7)),"")

si en A1 pones ferias
en A2 pones Montajes y asi hasta la A6 tambien tendrias el mismo efecto,

suponiendo que A1 A2 etc las tuvieras vacias.



¡Un SAludo!:-)

www.fermu.com
www.zorval.es
Respuesta Responder a este mensaje
#12 Tux
06/11/2006 - 00:20 | Informe spam
MyVi escribió:
Hola Hector.

Gracias por tu soporte, pero al final queda resuelto el que siempre
haya un "0" o MAYOR (o sea, nunca vacio) las columnas B y K con este
código:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Target = "" Then Target = 0 ' aqui evita celda vacia para
columna B
Else
If Target.Column = 11 Then
If Target = "" Then Target = 0 ' aqui columna K
Else

End If
End If

End Sub

Y funciona muy bien (tal cual lo necesito), simplemente el campo (o
campos de dichas columnas) tienen o 0 o algun nº superior a 0, y si
borro su contenido me reemplaza el VACIO por un 0 (tal cual
necesitaba).


Lo que ahora me queda pendiente es el ejecutar una MACRO tras salir de
una celda. ¿Ideas?
Con tu punto 5 parece como si me dijeras algo al respecto, pero me lio
cuando me hablas de evitar el 0 y tal (haciendome creer que no habla
sobre esto).

Eso es lo facil. Para complicarlo un poco más es que: al salir de la
celda, analice el nº de 5 digitos que hay (pues ha de haber uno o sino
será 0 y el resultado final seria NADA) y segun su primer digito (1,
2, 3, 4 o 5) escriba en la celda siguiente (a la abandonada, o sea, que
si pongo el nº 1X.XXX en la celda B7 pues en la celda C7 me pondrá la
palabra MONTAJES, y la lógica a seguir (qué palabra poner segun qué
primer digito encuentra) es esta:

1 = FERIAS
2 = MONTAJES
3 = CONTRATOS
.
.
.
.
Cuando se diera el caso de que al salir de la celda (B7) hubiera el "0"
lo que se escribiria en C7 sería VACIO (borrando cualquier palabra que
hubiera si fuera el caso).

Pero ya digo, con que alguien me diga COMO EJECUTAR UNA MACRO AL SALIR
DE UNA CELDA, ya tengo bastante.

Gracias




Mas o menos eso ¿no? :-S

Saludos :-)
Monica

¡Un SAludo!:-)

www.fermu.com
www.zorval.es
Respuesta Responder a este mensaje
#13 MyVi
06/11/2006 - 00:28 | Informe spam
BIEN! Pues me funciona!

Solo quisiera poner aqui el código exacto, dado que tengo el Office
2003 en ingles:

=IF(B7>0;INDEX({"Ferias"\"Montaje"\"Contrato
Mantenimiento"\"Intervención"\"Garantia
Italia"\"Reintervencion"};LEFT(B7));"­")

pero no ha sido muy dificil resolverlo.

Muchas gracias a todos.
Respuesta Responder a este mensaje
#14 MyVi
06/11/2006 - 00:38 | Informe spam
Vaya! Pues me acabo de dar cuenta de un pequeño detalle.

Ahora que ya me funciona todo, resulta ser que si selecciono mas de una
celda a la vez para eliminar su contenido, me da un error de código y
realmente me vacia el contenido de dichas celdas. Si lo hacemos una a
una, se contraresta el efecto (gracias al código) y de vacio pasa a
ser 0, pero cuando seleccionamos mas de una celda se pifia, y tras
cancelar el error, simplemente se quedan dichas celdas vacias!

La version del programa queda ya muy abanzada (con respecto a la
anterior) pero tendré que poner un carte que diga (no eliminar mas de
una celda al mismo tiempo) sino dara lugar al error.

¿se os ocurre algun sistema más para que esto tambien funcione bien?


Gracias nuevamente (yo tambien voy a remirar mas a ver si soy capaz de
dar con la solucion).

Gracias
Respuesta Responder a este mensaje
#15 Tux
06/11/2006 - 00:53 | Informe spam
MyVi escribió:
Vaya! Pues me acabo de dar cuenta de un pequeño detalle.

Ahora que ya me funciona todo, resulta ser que si selecciono mas de una
celda a la vez para eliminar su contenido, me da un error de código y
realmente me vacia el contenido de dichas celdas. Si lo hacemos una a
una, se contraresta el efecto (gracias al código) y de vacio pasa a
ser 0, pero cuando seleccionamos mas de una celda se pifia, y tras
cancelar el error, simplemente se quedan dichas celdas vacias!

La version del programa queda ya muy abanzada (con respecto a la
anterior) pero tendré que poner un carte que diga (no eliminar mas de
una celda al mismo tiempo) sino dara lugar al error.

¿se os ocurre algun sistema más para que esto tambien funcione bien?


Gracias nuevamente (yo tambien voy a remirar mas a ver si soy capaz de
dar con la solucion).

Gracias




Prueva asi :-)

Private Sub Worksheet_Change(ByVal Target As Range)

'Column 2 = B
'Column 11 = K
On Error Resume Next

If Target.Column = 2 Then
If Target = "" Then Target = 0
Else
If Target.Column = 11 Then
If Target = "" Then Target = 0
On Error GoTo 0


End If


End If

End Sub


¡Un SAludo!:-)

www.fermu.com
www.zorval.es
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida