Problemita con una macro

Hola, tengo un problemita con una macro que ingresa datos mediante un formulario.
Dicha macro funciona correctamente después de la segunda fila de datos ingresada, en el primer ingreso no pide uno de los datos, si alguno me quiere dar una mano le puedo mandar el archivo. O puedo copiar el código por acá.
Desde ya muchas gracias.

1 Respuesta

Respuesta
1
Necesitaremos ver la macro. Cópiala aquí mismo o dejala en algún lugar de descarga gratuita como rapidshare.
Sdos
La macro es esta..
Sub Macro1()
            Range("B2").Select
                ActiveSheet.Calculate
            Range("js_fecha").FormulaR1C1 = InputBox("FECHA", , , 1, 1)
                If Range("js_fecha") = "" Then End
Linea_condicion:
            Range("js_condicion").FormulaR1C1 = InputBox("CONDICION DE VENTA", , , 1, 1)
                If Range("js_condicion") = "" Then Macro1
                If Range("B3") > "" Then
                Selection.End(xlDown).Select
Linea_zona:
            Range("js_zona").FormulaR1C1 = InputBox("NUMERO DE ZONA", , , 1, 1)
                If Range("js_zona") = "" Then GoTo Linea_condicion
            End If
Linea_remito:
            Range("js_remito").FormulaR1C1 = InputBox("NUMERO DE REMITO", , , 1, 1)
                If Range("js_remito") = "" Then GoTo Linea_zona
                Do
Linea_unidad:
            ActiveCell.Offset(1, 0).Select
                Range("js_unidad").FormulaR1C1 = InputBox("UNIDADES DEL ARTICULO", , , 1, 1)
                If Range("js_unidad") = "" Then GoTo Linea2_remito
Linea_codigo:
            Range("js_codigo").FormulaR1C1 = InputBox("CODIGO DEL ARTICULO", , , 1, 1)
                If Range("js_codigo") = "" Then GoTo Linea_unidad
Linea_kilos_precios:
            Range("js_kilos").FormulaR1C1 = InputBox("KILOS VENDIDOS", , , 1, 1)
                If Range("js_kilos") = "" Then GoTo Linea_codigo
            Range("js_precio_final").FormulaR1C1 = InputBox("PRECIO DE VENTA", , , 1, 1)
                If Range("js_precio_final") = "" Then GoTo Linea_kilos_precios
                Calculate
            Range("CODIGOS!B2:D18").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            Range("CODIGOS!M7:M8"), CopyToRange:=Range("CODIGOS!L2:N3"), Unique:=False
                ActiveSheet.Calculate
            Range("fila_datos").Copy
                Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
                Application.CutCopyMode = False
                ActiveSheet.Calculate
            Loop
Linea2_remito:
            Range("js_remito").FormulaR1C1 = InputBox("NUMERO DE REMITO", , , 1, 1)
                If Range("js_remito") = "" Then Macro1
Linea2_unidad:
            Range("js_unidad").FormulaR1C1 = InputBox("UNIDADES DEL ARTICULO", , , 1, 1)
                If Range("js_unidad") = "" Then GoTo Linea2_remito
Linea9:
            Range("js_codigo").FormulaR1C1 = InputBox("CODIGO DEL ARTICULO", , , 1, 1)
                If Range("js_codigo") = "" Then GoTo Linea2_unidad
Linea10:
            Range("js_kilos").FormulaR1C1 = InputBox("KILOS VENDIDOS", , , 1, 1)
                If Range("js_kilos") = "" Then GoTo Linea9
            Range("js_precio_final").FormulaR1C1 = InputBox("PRECIO DE VENTA", , , 1, 1)
                If Range("js_precio_final") = "" Then GoTo Linea10
                Calculate
            Range("CODIGOS!B2:D18").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            Range("CODIGOS!M7:M8"), CopyToRange:=Range("CODIGOS!L2:N3"), Unique:=False
                ActiveSheet.Calculate
            Range("fila_datos").Copy
                Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
                Application.CutCopyMode = False
                ActiveSheet.Calculate
            GoTo Linea_unidad
End Sub
Aclaración, el encabezado de la hoja donde ingresan los datos esta en la fila 2, los datos comienzan a ingresar en la fila 3, pero en el primer ingreso, osea el de la fila 3 no me pide zona, sino que salta de la linea condición a la linea remito, en el segundo ingreso y los posteriores, si pide la linea zona.
Espero haber sido claro, de lo contrario el archivos se encuentra en el siguiente link
http://rapidshare.com/files/252601778/nuevo.xls
Desde ya muchas gracias Elsa.
En la rutina Linea_Condición, hay un If .... sin End if, por lo que toma recién el end if de la rutina sgte.
TE dejo los 2 tramos ajustados con negrita
Linea_condicion:
            Range("js_condicion").FormulaR1C1 = InputBox("CONDICION DE VENTA", , , 1, 1)
                If Range("js_condicion") = "" Then Macro1
                If Range("B3") > "" Then Selection.End(xlDown).Select
Linea_zona:
            Range("js_zona").FormulaR1C1 = InputBox("NUMERO DE ZONA", , , 1, 1)
                If Range("js_zona") = "" Then GoTo Linea_condicion
           'End If    'esta no va
Al colocar la instrucción a continuación del THEN no se requiere de End IF
No quiero dejar de mencionar, y sin ánimo de ofender sino de aportar ayuda, que tu método con los InputBox adolece de varios problemas. Te sugiero lo intentes con un formulario, desde la misma hoja o con un Userform.
Esto te permitiría 'ver' lo que vas ingresando y modificar si hiciera falta antes de pasar el registro final.
En mi sitio podrás encontrar algunos ejemplos, en sección Descargas.
Sdos
Elsa
PD) No te pierdas la promoción del mes de julio en manuales
Gracias nuevamente Elsa, funciona bien ahora.
Respecto a la recomendación, voy a chequear los ejemplos de tu sitio, y respecto a los manuales me pongo en contacto con vos vía mail, quisiera los tres así me beneficio con el descuento.
Saludos, Jacinto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas