Macros en Excel, no reconoce los campos con valor cero

Tengo una macro para inventarios que maneja ocho artículos, en cantidades enteras y decimales. He integrado la macro para que me lleve los ocho campos a otra hoja y lo realiza, pero cuando el inventario no se mueve, y capturo "0" la macro no avanza porque entiende que el campo esta vacío o en blanco. ¿Cómo le hago para que la macro reconozca el valor de cero y así me lo mande a la hoja que le he dictado? La macro que tengo es la siguiente:
Sub Inventarios()
'Aqui se declaran las variables a usarse
Dim FECHA As Date
Dim AGUA, ARMORALL, CERA, POLISH, SHAMPOO, DESENGRASANTE, DIESEL, GASOLINA, AROMAS As Currency
'Revisamos que los campos esten llenos, sino se envia un msj y finaliza la macro
If Range("f9").Value = Empty Or Range("f10").Value = Empty Or Range("f11").Value = Empty Or Range("f12").Value = Empty Or Range("f13").Value = Empty Or Range("f14").Value = Empty Or Range("f15").Value = Empty Or Range("f16").Value = Empty Or Range("f17").Value = Empty Or Range("f18").Value = Empty Then
MsgBox prompt:="Estas dejando campos vacios", Buttons:=vbOKOnly, Title:="Llena todos los campos"
Exit Sub
End If
'Le damos valores a las variables
FECHA = Range("f9").Value
AGUA = Range("f10").Value
ARMORALL = Range("f11").Value
CERA = Range("f12").Value
POLISH = Range("f13").Value
SHAMPOO = Range("f14").Value
DESENGRASANTE = Range("f15").Value
DIESEL = Range("f16").Value
GASOLINA = Range("f17").Value
AROMAS = Range("f18").Value
' aqui comienza la rutina de control
Sheets("Consumo de Inventarios").Select
Range("b21").Select
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Value = FECHA
ActiveCell.Offset(0, 1).Value = AGUA
ActiveCell.Offset(0, 2).Value = ARMORALL
ActiveCell.Offset(0, 3).Value = CERA
ActiveCell.Offset(0, 4).Value = POLISH
ActiveCell.Offset(0, 5).Value = SHAMPOO
ActiveCell.Offset(0, 6).Value = DESENGRASANTE
ActiveCell.Offset(0, 7).Value = DIESEL
ActiveCell.Offset(0, 8).Value = GASOLINA
ActiveCell.Offset(0, 9).Value = AROMAS

1 respuesta

Respuesta
1
¿La celda que quieres evaluar contiene el numero "0" o está vacía?, ya que si la celda contiene el "0", podrías hacer la comparación con texto. algo así: Range("f10").text = ""
Bueno pero aquí en ésta página hay algunos ejemplos de macros y VB. http://alexcastaneda.blogspot.com/2009/04/vba-excel-excel-y-visual-basic.html
Gracias por el soporte Alex.
Mira, he hecho lo que me recomendaste, pero sigue igual. Según yo, a reserva de lo que pienses, el problema está en el candado. Al decirle que considere los campos vacíos con el comando "Empty", la pc considera el "0" como un valor vacío y por tanto, la celda tiene campo vacío y al cumplir la condición del candado, no avanza. Le cambié el candado, y en lugar de "Empty" le puse "< 0" y ahora si se corre la macro considerando el "0" como valor... pero ahora el problema es que si dejo la celda en blanco, asi me manda la información y ya no se activa el candado. ¿Qué puedo hacer? Gracias por el soporte.
Bueno que te parece si mejor creas una macro y recorres todo el rango que quieras evaluar, buscando celdas vacías, y si encuentras pues ponles un cero, ya luego corres tu macro normalmente. De esa manera podrás tener la condición "< 0" y la macro correrá muy bien.
Fuente: http://alexcastaneda.blogspot.com/
Gracias de nuevo por el soporte Alex. Yo soy nuevo en esto de las macros y es probablemente por eso por lo que no te entiendo muy bien. Me disculpo por mi insistencia...
Como te comente ya resolví lo del cero... pero de cualquier modo me metí en el problema de que no se activa el candado si dejo espacios en blanco... Quiero que si el capturista deja espacios en blanco, no avance en la captura... pero el problema es que si le digo a la macro que considere los espacios "empty", no entenderá el valor de "0"...
el problema es ese... ¿si dejo la fórmula "< 0" la macro avanza aunque tenga espacios en blanco... y lo que yo necesito es que no avance si hay espacios en blanco... y que avance si hay ceros... alguna sugerencia?
Creo es debe ser algo muy sencillo pero como no conozco a fondo esto... pues... heme aquí batallando... Muchas gracias por el soporte.
Aquí hay algo de lo que tu estás preguntando
http://www.todoexpertos.com/categorias/tecnologia-e-internet/redes-de-computadores/respuestas/160926/validar-celdas-antes-de-antes-de-ejecutar-macro
Si aún no solucionas el problema, dejame tu correo para contactarte por el msn.
Alex... no he resuelto el problema... si puedes contactarme por favor a mi correo... es [email protected] muchas gracias..
Excelente soporte Alex...
Al final el código que me sugeriste resolvió excelentemente mi duda y lo pongo como quedó:
'Revisamos que los campos esten llenos, sino se envia un msj y finaliza la macro
If Range("f9").Value = "" Or Range("f10").Value = "" Or Range("f11").Value = "" Or Range("f12").Value = "" Or Range("f13").Value = "" Or Range("f14").Value = "" Or Range("f15").Value = "" Or Range("f16").Value = "" Or Range("f17").Value = "" Or Range("f18").Value = "" Then
MsgBox prompt:="Estas dejando campos vacios", Buttons:=vbOKOnly, Title:="Llena todos los campos"
Exit Sub
End If
Realmente se excedieron mis expectativas de soporte. Muchas gracias en lo personal a Alex, y a las personas que como él comparten sus conocimientos en favor de los demás. Al portal por habilitar propuestas de solución real en colaboración gratuita... muchas gracias... en verdad... excelente soporte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas