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

#6 MyVi
05/11/2006 - 19:55 | Informe spam
PRIMERA PARTE:

Pues el caso es que no me entero.
¿Cómo puedo EVITAR que unas celdas concretas (RANGE B7:B56 & RANGE
K7:K56) nunca se queden VACIAS? En caso de que el usuario borre su
contenido que al salir de la celda su valor sea 0 y no asi VACIO.

He intentado probar las opciones que me mostrais más arriba pero no
soy capaz de hacerlo funcionar.
Veamos, AnSanVal dice esto:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Target = "" Then Target = 0 ' aqui evita celda vacia.
Else
' otra posibilidad (o código).
End If
End Sub

...pero se supone que la columna con las celdas a "proteger" es la A y
en mi caso es la B y la K, y como no veo ninguna refencia a "A" por
ningun lado, no soy capaz de cambiarlo por B y K.

Si pego dicho código tampoco parece hacerme nada.

Gracias de nuevo.
Respuesta Responder a este mensaje
#7 Tux
05/11/2006 - 22:29 | Informe spam
MyVi escribió:
PRIMERA PARTE:

Pues el caso es que no me entero.
¿Cómo puedo EVITAR que unas celdas concretas (RANGE B7:B56 & RANGE
K7:K56) nunca se queden VACIAS? En caso de que el usuario borre su
contenido que al salir de la celda su valor sea 0 y no asi VACIO.

He intentado probar las opciones que me mostrais más arriba pero no
soy capaz de hacerlo funcionar.
Veamos, AnSanVal dice esto:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Target = "" Then Target = 0 ' aqui evita celda vacia.
Else
' otra posibilidad (o código).
End If
End Sub

...pero se supone que la columna con las celdas a "proteger" es la A y
en mi caso es la B y la K, y como no veo ninguna refencia a "A" por
ningun lado, no soy capaz de cambiarlo por B y K.

Si pego dicho código tampoco parece hacerme nada.

Gracias de nuevo.




Hola Myvi :-)

Bueno el codigo si esta creado para la columna A que nos lo dice en la
linea de codigo siguiente:

If Target.Column = 1 Then 'correspondiente a la columna Uno

entonces para las columnas B y K quedaria asi:

Private Sub Worksheet_Change(ByVal Target As Range)

'Column 2 = B
'Column 11 = K

If Target.Column = 2 Then
If Target = "" Then Target = 0
Else
If Target.Column = 11 Then
If Target = "" Then Target = 0
Else

End If
End If
End Sub

Bueno estoy haciendo pruebas y demas con la segunda parte :-)

Saludos
Monica

¡Un SAludo!:-)

www.fermu.com
www.zorval.es
Respuesta Responder a este mensaje
#8 MyVi
05/11/2006 - 23:02 | Informe spam
Vaya, pues funciona de maravilla, lo que son entender las cosas...

Gracias, 1ª parte lista

A ver la segunda.

Muchas gracias de nuevo.
Respuesta Responder a este mensaje
#9 Héctor Miguel
05/11/2006 - 23:20 | Informe spam
hola, ?

1) no se si sea absolutamente necesario 'evitar' que 'ciertas' celdas queden 'vacias' para sustituir por un 0 [cero] -> por codigo -?-

2) si suponemos que puedes dejar 'fijas' las palabras que necesites [p.e] en el rango 'A1:A6' -?-
prueba con una formula [p.e. en 'C7' en funcion del contenido en 'B7'] +/- de: -> =si(b7>0,indice($a$1:$a$6,izquierda(b7)),"")

3) o puedes 'armar' una tabla de valores y equivalencias y usar despues la funcion buscarv(...) -?-

4) o puedes usar otro tipo de funciones +/- como la propuesta anterior [p.e.] del tipo de:
-> =si(b7>0,elegir(izquierda(b7),"ferias","montajes","contrato mantenimiento","intervencion","garantia","reintervencion"),"")
-> =si(b7>0,indice({"ferias"\"montajes"\"contrato mantenimiento"\"intervencion"\"garantia"\"reintervencion"},izquierda(b7)),"")

5) si consideras que evitar celdas vacias es... 'inevitable' -?- [considera tambien los codigos inhabilitan el deshacer, undo, ctrl+Z]

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

__ la consulta original __
Tengo B7 [B7:B56 & K7:K56] que le introduzco un nº de 5 digitos: XX.XXX
... le doy a TAB o simplemente salgo de esa celda y pulso en cualquier otro lugar
... necesito que en C7 (siempre es la celda de la derecha) me indique una palabra en funcion del primer digito... introducido:
1X.XXX = Ferias
2X.XXX = Montajes
3X.XXX = Contrato Mantenimiento
4X.XXX = Intervención
5X.XXX = Garantia
6X.XXX = Reintervención
... algo asi
IF B7 = 1X.XXX then C7 = Ferias
IF B7 = 2X.XXX then C7 = Montajes [...]
Respuesta Responder a este mensaje
#10 MyVi
05/11/2006 - 23:42 | Informe spam
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
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida