Una validación de datos paraliza mi macro

Hola

Imaginemos que tengo una macro que organiza,contabiliza y guarda las ventas de una tienda.Los datos se ingresan a traves de lector de codigo de barras en la columna "D"

Ejecutando el boton de la macro se pone en marcha y todo correcto pero.

Los datos que ingreso en la columna "D" estan restringidos por una validacion de datos,concretamente $F:$F.Es decir solamente se pueden ingresar datos en "D" si estos pertencen a "F". Esta columna"F" es el listado de articulos y cuando quiero ingresar un Nuevo articulo evidentemente aparece un cuadro de excepcion que me paraliza la macro y debo ingresar el nuevo articulo manualmente.Necesito que cuando se de esta situacion, aparezca un ¿combobox?¿msgbox?¿formulario? , que introduzca los siguientes datos de esta manera:Ultima celda vacia de la columna "F" y ultima celda vacia de la columna "B" (referencia o nombre del articulo).Ultima celda vacia de la columna "C" (el precio del articulo) y que luego siga ejecutando codigo predefinido.

¿Como lo veis, mis idolatrados expertos?

Un saludo L. 

1 Respuesta

Respuesta
1

Te explico la idea. Si luego tenés alguna dificultad escribime nuevamente con la macro para poder ajustarla.

Al momento que se interrumpe la macro x un código nuevo, podes ubicar la instrucción ... entonces antes de eso colocá:

On Error goto nuevoProd

'y aquí sigue tu macro normalmente hasta que llegues a la parte en que TAMBIÉN se deba continuar con un registro nuevo, ... entonces colocarás:

Sigo:

'y aquí el resto para todos.

'hasta llegar al fin de la macro (será End sub) pero colocá

Exit sub


Y a continuación el proceso para los nuevos:

NuevoProd:

'instrucciones

Goto sigo

End Sub



Bien, ¿ahora qué utilizar? Depende... si son pocas col podrías ir solicitando los campos mediante Inputbox o llamar a un formulario con lso campos necesarios.

En cualquier caso, si los datos se colocarán al final de la o las tablas habrá que buscar 1ro las filas libre:

libreF = range("F65536").End(xlup). Row +1 'si tenés Excel 2007 o superior evaluá cuál es tu ultima fila en lugar de 65536

libreB= range("BF65536").End(xlup).Row +1

Seguramente B y C pertenecen a la misma tabla y no hace falta buscar la última fila.

Si todo quedo claro no olvides finalizar la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas