You are on page 1of 22

Identificarme

Buscar...

Posts
Inicio

Comunidades
Destacados

Msica

Juegos

TOPs

Global

Novatos

APUNTES Y MONOGRAFAS | HACE MS DE 1 AO


Me gusta 27 6 2 Tw ittear 2

kill_spinal

41

Excel + VBA - Ejemplo de Facturacion.


Anuncios Google

Seguidores

297
Puntos

9
Posts

DRCVPU as/99 IET LS .9.0


w w D R C V c m p / r m - l s- Graba, Pausa y Retrocede en Vivo + 2 Pelis PPV Gratis. 01 640 0373 w.IET.o.ePooPu
Regular

Cnrld Ivnais oto e netro


w w r i . o - RGIS Especilistas en Inventarios Reportes, soporte, control w.gscm

Ver m s del autor

Sfwr d Koc otae e iso


w w p o i i . o /- Programa de navegacion para kiosco Monitoreo de kioscos w.rvsocm

Pae Epra? lna xotr


w w m r a i . o - No olvide registrar su Marca Proteja su Marca en el Extranjero! w.acracm

Segundo post dedicado a excel . Hoy me he levantado muy temprano y de buen humor. Y es por eso mismo que en vez de meterle mano al formulario del post anterior, he decidido brincarme todo el rollo y publicar una propuesta de un archivo que nos permita imprimir una factura, incluyendo su modulo de clientes y productos. Antes de empezar, la configuracion de mi pc: - Windows Home Basic. - Office 2010 Consideraciones - el codigo VBA es el mismo de Visual basic 6, por lo que debe funcionar tambien en versiones anteriores a excel 2010. De todos modos, el codigo que vamos a escribir sera de lo mas sencillo para brincar esa cuestion. Se podria escribir un codigo bastante robusto y optimo pero eso incrementaria las lineas al triple y podria causar confusion a los lectores novatos en programacion. En el post anterior tenemos un ejemplo de como insertar datos en hoja desde un formulario. Esa es la misma mecanica que vamos usar, con la unica diferencia que ahora vamos a leer datos de la hoja y a pasarlos al formulario. FORMATEANDO LAS HOJAS bueno, tons, primero abre excel y de inmediato guardas el libro como factura.xls o factura xlsm. en excel 2010 debes guardarlo como libro con ejecucion de macros ( xlsm ) en 2007 creo que solo tienes que habilitar las macros. en anteriores a 2007 da igual.

Tags
office crear Facturacion excel macros kill_spinal visual basic VBA hulero factura huleronet

Anuncios Google

Excel VBA Macro Excel VBA Range Excel VBA Compartido por

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

1/30

ahora, el libro nos crea automaticamente 3 hojas. vamos a cambiarles el nombre como sigue: hoja1 = clientes hoja2 = productos hoja3 = facturas bien, ahora inserta una hoja mas y le pones el nombre de impresion

- lo siguiente son los encabezados. en la hoja clientes vamos a escribir lo siguiente es las celdas siguientes: A1 = razon, B1 = rfc, C1 = direccion ingresale unos cuantos datos

la hoja productos A1 = clave, B1 = descripcion, C1 = precio ingresale unos cuantos datos

la hoja facturas A1 = factura, B1 = fecha, C1 = razon, D1 = descripcion, E1 = precio, F1 = cantidad, G1 = total

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

2/30

- ahora va la hoja de la impresion. aqui deberias hacer una replica de tu factura de papel en la hoja de excel, pero solo vamos a tomar en cuenta los lugares que hay que llenar, ya que en el papel estan marcados las lineas. en pocas palabras, excel solo va a imprimir lo que deberias escribir a mano. por ejemplo, supongamos que nuestra factura de papel en blanco es la siguiente:

AJUSTANDO LA HOJA DE IMPRESION entonces, en excel vamos a hacer una plantilla identica a la factura, la llenamos con datos ficticios y luego la imprimimos en una hoja reciclada(no en la hoja de la factura). luego transparentamos la hoja reciclada con la factura y checamos que los espacios que llenamos estan en el lugar correcto que corresponde al papel de la factura. este paso hay que repetirlo hasta que, cuando transpongamos la hoja reciclada con la factura original, los lugares queden perfectamente alineados. Finalmente, para comprobar que la plantilla de excel corresponde al papel de tu factura, sacale una copia fotostatica a tu factura e imprimimes la plantilla de excel en la copia. si todo corresponde, entonces podemos pasar al siguiente paso.

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

3/30

Guarda el archivo para que no pierdas los cambios, (murphy dice que windows solo falla cuando tienes algo sin guardar en pantalla) DISEO DE LOS FORMULARIOS Pulsa ALT + F11 y se abre la ventana de VBA.

Los formularios a crear son: - captura de clientes

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

4/30

- captura de productos - impresion de factura - catalogo de productos - catalogo de clientes - menu sin embargo, la captura de datos simples esta explicado en mi post anterior, por lo que la captura de clientes y de productos la vamos a omitir para centrarnos en la impresion de la factura. La creacion de los formularios omitidos la debes hacer tu mismo. la manera de cambiar las propiedades tambien esta explicado en el post anterior, tambien vamos a omitir esa explicacion. la creacion de formularios e insercion de controles tambien sera omitida, pues esta en el post anterior. los prefijos que vamos a usar para los controles son: lbl = etiqueta o label txt = cuadro de texto o textbox cmb = cuadro combinado o combobox lst = cuadro de lista o listview grb = marco o frame (grb de groupbox, no se nota la influencia de .net) chk = casilla de verificacion o checkbox (el cuadrito que le pones o quitas una palomita) Quiero hacer notar que existe un control grid que facilita la tarea de almacenar datos, pero dado que hay que encontrar su referencia, y a que tambien varia su uso, ubicacion y existencia con el uso de cada version de windows, no lo vamos a usar. No vamos a agregar ningun control externo para hacer mas compatible este archivo entre ordenadores con diferentes sistemas operativos. bueno, una vez aclarados los puntos anteriores, vamos por el form mas culero: FACTURACION - agrega un nuevo formulario y le pones el nombre de frmFacturacion y caption - IMPRESION DE FACTURA

- inserta los siguientes controles con los siguientes nombres/propiedades: grbDatosCliente con caption = Datos del Cliente, width = 444 y height = 78 (estira el form para que quepa) -- dentro de grbDatosCliente vas a insertar 5 etiquedas y 5 cuadros de texto -----lblRazon con caption = Razon -----lblDireccion con caption = Direccion -----lblRFC con caption = RFC -----lblFecha con caption = Fecha -----lblNoFactura con caption = No. Factura -----txtRazon -----txtDireccion -----txtRFC -----txtFecha -----txtNoFactura recuerda que a una etiqueta le corresponde a su lado un cuadro de texto con el mismo nombre, por ejemplo, txtRazon va ubicado al lado derecho de lblRazon. Acomoda los espacios de manera que todo quede bien a la vista del usuario:

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

5/30

- ahora inserta 4 cuadros de lista afuera y por debajo del grbDatos Cliente con los siguientes atributos lstCantidad con width = 54 y height = 162 lstDescripcion con width = 227.25 y height = 162 lstPrecio con width = 67.55 y height = 162 lstImporte con width = 77.25 y height = 162 en el orden de creacion, ubicalos a la misma altura uno junto de otro. ademas, inserta una etiqueta arriba de cada lista para que el usuario sepa que contiene cada columna: arriba de lstCantidad pones una lblCantidad con caption Cantidad arriba de lst Descripcion pones un lblDescripcion con caption descripcion y asi con las otras dos listas restantes. mira nomas que chulo esta quedando el form:

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

6/30

- continuamos con la ultima parte de su diseo: inserta tres cuadros de texto debajo inmediato de lstImporte con los siguientes atributos: txtSubtotal con width = 61.5 y enabled = false txtIVA con width = 61.5 y enabled = false (estoy en en mexico, se nota????) txtTotal con width = 61.5 y enabled = false (cuando enabled es falso el control esta bloqueado para su uso, cuando es true se puede usar) -estos tres txt's ponles sus correspondientes etiquetas, osea al txtSubtotal le pones a su izquierda un lblSubtotal con caption = Subtotal, y asi con los tres txt's -ademas, inserta un txtLetras debajo del lstCantidad y estiras su tamao hacia la derecha hasta llegar a la lblSubtotal y luego estiras hacia abajo hasta coincidir con lblIVA. Le pones multiline = true, enabled = false. Este txt no lleva etiqueta. -Agregar un boton de comando llamado cmdBuscar con caption = Buscar Cliente y lo ubicamos en la parte de mas abajo del formulario a la izquierda. -agrega un boton de comando llamado cmdProductos con caption = Productos y ubicalo a la derecha de cmdBuscar -agrega un boton de comando llamado cmdAceptar con caption = Aceptar y ubicalo a la derecha de cmdProductos -agrega una casilla de verificacion o checkbox con nombre chkImprimir y caption = Imprimir al aceptar y ubicala a la derecha de cmdCancel este es el aspecto final que deberia tener el formulario:

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

7/30

PROGRAMANDO LOS EVENTOS - haz doble click encima del form en alguna region donde no tenga ningun control. - aparece la ventana de codigo. si te fijas, en la parte de arriba del lado izquierdo tiene el nombre de todos los controles que contiene el formulario, incluyendo el propio formulario pero con el nombre de UserForm, y del lado derecho estan los eventos de los mismos. tons para programar un evento, escogemos en el lado izquierdo el control y del lado derecho el evento a programar. - escoge el control UserForm (osea, el formulario)

- luego escoge el evento ACTIVATE

- VBA te va a insertar el encabezado y final del evento activate. Las lineas de codigo que pongamos en ese espacio se van a ejecutar cuando formulario se active.

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

8/30

las lineas de abajo del evento click las podemos eliminar para no causar confusion. y bueno, escribimos dentro del evento activate del formulario las siguientes lineas: Private Sub UserForm_Activate() Me.txtFecha.Text = Date End Sub a continuacion pulsa F5 y verifica que en el txtFecha se ha escrito la fecha automaticamente. si hasta aqui todo va bien, continuamos con los eventos de los demas controles como sigue: control cmdAceptar, evento Click Private Sub cmdAceptar_Click() If MsgBox( finalizar la captura de la factura?", vbQuestion + vbYesNo) = vbNo Then Exit Sub guardarFactura MsgBox (chkImprimir.Value) If Me.chkImprimir.Value = True Then ImprimirFactura End Sub control cmdBuscar, evento Click Private Sub cmdBuscar_Click() frmBuscarCliente.Show ' mostrar el formulario de buscar clientes End Sub control cmdProductos, evento Click Private Sub cmdProductos_Click() frmAgregarProducto.Show ' mostrar el formulario de agregar productos End Sub control UserForm, evento activate Private Sub UserForm_Activate() Me.txtFecha.Text = Date ' para poner la fecha cuando se ejecute el form End Sub '-- al final de la ventana de codigo, vamos a crear tres procedimientos que no estan ligados al evento de ningun control, y que pueden ser ejecutados cuando se requiera, aun sin ejecutar ningun evento. Public Sub sumarImporte() ' suma solo la ultima lista, osea, los importes Dim i As Integer Dim dTotal As Double dTotal = 0 For i = 0 To Me.lstImporte.ListCount - 1 dTotal = dTotal + Val(Me.lstImporte.List(i)) Next Me.txtSubtotal.Text = dTotal If dTotal > 0 Then ' aqui se hacen los calculos para el subtotal, iva y total Me.txtIVA.Text = Round((Val(Me.txtSubtotal.Text) / 100) * 16, 2) Me.txtTotal.Text = Val(Me.txtSubtotal.Text) + Val(Me.txtIVA.Text) End If End Sub Private Sub guardarFactura() Dim i As Integer Sheets( "facturas ).Activate ' activamos la hoja en la que vamos a trabajar If Trim(Range( "A2" ).Value) = "" Then ' localizamos la celda en donde vamos a empezar a insertar Range( "A2" ).Activate Else Range( A1 ).End(xlDown)(xlDropDown).Activate

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

9/30

End If ActiveCell.Value = Me.txtNoFactura.Text ' insertamos los datos ActiveCell.Next.Value = Me.txtFecha.Text ActiveCell.Next.Next.Value = Me.txtRazon.Text For i = 0 To Me.lstCantidad.ListCount ActiveCell.Next.Next.Next.Value = Me.lstDescripcion.List(i) ActiveCell.Next.Next.Next.Next.Value = Me.lstPrecio.List(i) ActiveCell.Next.Next.Next.Next.Next.Value = Me.lstCantidad.List(i) ActiveCell.Next.Next.Next.Next.Next.Next.Value = Me.lstImporte.List(i) Next End Sub Private Sub ImprimirFactura() ' esta hace lo mismo pero con la hoja de impresion Dim i As Integer Sheets( IMPRESION ).Activate Range( "a1:h25" ).ClearContents ' limpiamos la hoja para la nueva impresion (esta linea es necesaria) Range( g2 ).Value = Me.txtFecha.Text Range( C2 ).Value = Me.txtRazon.Text Range( C3 ).Value = Me.txtDireccion.Text Range( b8 ).Select For i = 0 To Me.lstCantidad.ListCount - 1 ActiveCell.Value = Me.lstCantidad.List(i) ActiveCell.Next.Value = Me.lstDescripcion.List(i) ActiveCell.Next.Next.Value = Me.lstPrecio.List(i) ActiveCell.Next.Next.Next.Next.Value = Me.lstPrecio.List(i) ActiveCell.Next.Next.Next.Next.Next.Value = Me.lstImporte.List(i) ActiveCell(xlDropDown).Activate Next Range( g19 ).Value = Me.txtSubtotal.Text Range( g20 ).Value = Me.txtIVA.Text Range( g21 ).Value = Me.txtTotal.Text Range( b20 ).Value = Me.txtLetras.Text ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False End Sub - aqui las capturas

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

10/30

-- NOTACION - en el ejemplo no estoy incluyendo la funcion para convertir los numeros en texto porque es muy largo, sin embargo, en el archivo de ejemplo que dejo al final si esta implementada. y eso es todo con respecto a la facturacion. CARGAR CLIENTES - cierra el formulario frmFacturacion - agrega otro formulario llamado frmBuscarCliente con caption = Buscar Cliente - agregale los siguientes controles. lblClientes con caption = Clientes cmbClientes con style = 2 frmStyleDropDownList (lista para escoger items) cmdAceptar con caption = Aceptar ubicalos de la siguiente manera: lblClientes en la parte mas arriba, luego abajo el cmbClientes y abajo de este pones el cmdAceptar.

los eventos: control cmdClientes, evento Change Private Sub cmbClientes_Change() Cells.Find(What:=Me.cmbClientes.Text, After:=ActiveCell, LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:=False, SearchFormat:=False).Activate End Sub control cmdAceptar, evento Click Private Sub cmdAceptar_Click() With frmFacturacion

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

11/30

.txtRazon.Text = ActiveCell.Value .txtRFC.Text = ActiveCell.Next.Value .txtDireccion.Text = ActiveCell.Next.Next.Value End With Unload Me End Sub control UserForm, evento Activate Private Sub UserForm_Activate() Dim sUltimaCelda As String Me.cmbClientes.Clear Sheets( CLIENTEs ).Activate If Trim(Range( A2 ).Value) = "" Then Exit Sub If Trim(Range( A3 ).Value) = "" Then Me.cmbClientes.AddItem (Range( A2 ).Value) Exit Sub End If sUltimaCelda = Range( A1 ).End(xlDown).Address For Each f In Range( A2:" & sUltimaCelda).Cells Me.cmbClientes.AddItem (f.Value) Next End Sub asi se debe ver en la ventana de codigo

y con eso ya podemos cargar a los clientes en la factura. AGREGAR PRODUCTOS a la factura es similar a cargar los clientes, solo que vamos a llenar las listas. - cierra los formularios abiertos - agrega un nuevo formulario llamado frmAgregarProducto y le pones caption = Agregar Productos - insertale los siguientes controles: cmbClave con style = 2 frmStyleDropDownList txtDescripcion con enabled = false txtPrecio con enabled = false txtCantidad cmdAgregar con caption = Agregar a los txt's y al cmb les pones sus respectivos lbl's asi podria verse el diseo:

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

12/30

y ahora el codigos de los eventos: Private Sub cmbClave_Change() If Me.cmbClave.Value = "" Then Exit Sub Dim sUltimaCelda As String Me.txtDescripcion.Text = "" Me.txtPrecio.Text = "" If Me.cmbClave.ListCount > 1 Then sUltimaCelda = Range( A1 ).End(xlDown).Address Else sUltimaCelda = "A2" End If Range( A2:" & sUltimaCelda).Select Selection.Find(What:=Trim(Me.cmbClave.Text), After:=ActiveCell, LookIn:=xlValues _ , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:=False, SearchFormat:=False).Activate With Me .txtDescripcion.Text = ActiveCell.Next.Value .txtPrecio.Text = ActiveCell.Next.Next.Value End With End Sub Private Sub cmdAgregar_Click() If Trim(Me.txtCantidad.Text) = "" Then MsgBox ( Debes ingresar la cantidad!! ): Exit Sub If Me.txtDescripcion.Text = "" Then MsgBox ( Debes elegir un producto!! ): Exit Sub With frmFacturacion .lstCantidad.AddItem (Me.txtCantidad.Text) .lstDescripcion.AddItem (Me.txtDescripcion.Text) .lstPrecio.AddItem (Me.txtPrecio.Text) .lstImporte.AddItem (Str(Val(Me.txtCantidad.Text) * Val(Me.txtPrecio.Text))) End With frmFacturacion.sumarImporte Me.txtDescripcion.Text = "" Me.txtPrecio.Text = "" Me.txtCantidad.Text = "" Me.cmbClave.ListIndex = -1 Me.cmbClave.SetFocus End Sub Private Sub txtCantidad_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) ' esto es para que el textbox solo acepte numeros If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0 End If End Sub Private Sub UserForm_Activate() Dim sUltimaCelda As String Me.cmbClave.Clear Sheets( PRODUCTOS" ).Activate If Trim(Range( A2 ).Value) = "" Then Exit Sub If Trim(Range( A3 ).Value) = "" Then Me.cmbClave.AddItem (Range( A2 ).Value)

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

13/30

Exit Sub End If sUltimaCelda = Range( A1 ).End(xlDown).Address For Each f In Range( A2:" & sUltimaCelda).Cells Me.cmbClave.AddItem (f.Value) Next End Sub - aqui estan las capturas pa que vean la identacion

- EL MENU es para finalizar el ejemplo: - inserta un form con nombre frmMenu y caption = Menu -inserta tres botones cmdFacturar con caption = Facturar cmdCapturaCliente con caption = Agregar Cliente cmdCapturaProducto con caption = Agregar Producto - ubicalos en el orden de creacion uno al lado de otro este es el aspecto que podria tener:

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

14/30

- en el evento Click del control cmdFacturar escribe lo siguiente: Private Sub cmdFacturar_Click() frmFacturacion.Show End Sub y hasta aqui. PARA FINALIZAR - en la hoja de impresion, debes quitar las lineas y texto que sirvieron para checar la factura con la plantilla sin mover los tamaos de las celdas. - como podras observar, el codigo hace referencia directa a ciertas celdas y hojas. Si cambias el nombre de una hoja, tambien lo debes hacer en el codigo. - el nombre del libro no importa LO QUE DEBES IMPLEMENTAR TU MISMO - una macro o boton para ejecutar el formulario menu desde excel - el formulario de captura de clientes - el formulario de captura de productos - al hacer click en una lista, las otras tres listas deben activar el item que esta en la misma direccion. TIPS - te molesta que los cambios de hojas e insercion sean visibles detras del formulario?? entonces en el evento activate del menu ponle application.screenupdating = false. esto desconecta la pantalla de excel y se queda congelada mientras trabajas en el formulario. No olvides poner en true de nuevo esta opcion en el evento queryunload del formulario, sino no vas a poder descongelar la pantalla. - la funcion application.visible = false, es igual a la anterior pero esta esconde definitivamente a excel de windows dejando solo el formulario activo. Tambien tienes que activarla cuando cierres el formulario. - para ejecutar el formulario de manera automatica al abrir el libro, en el entorno de VBA, en el explorador de objetos das doble click en el objeto Thisworkbook y en el evento open le pones frmMenu.show - para cerrar el libro cuando cierres el menu pones en el evento queryunload del menu la siguiente linea: activeworkbook.save ' para guardar los cambios hechos application.quit - para controlar el texto que aparece en el statusbar de excel, usas la funcion application.statusbar = "lo que quieras escribir"

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

15/30

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

16/30

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

17/30

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

18/30

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

19/30

MODIFICACION PARA DESCONTAR EXISTENCIAS CUANDO SE IMPRIMA O GUARDE LA FACTURA - en la hoja de productos, agrega una encabezado mas con el titulo existencia

metele algunos datos, estos deben ser numeros (pues es existencia)

ahora, hay que agregar un procedimiento mas al formulario de facturacion, ese procedimiento sera el encargado de que por cada producto que se encuentre en la factura, sus existencia sea descontada de la hoja. ese procedimiento es sencillo: Private Sub descontarExistencia(ByVal sDescripcion As String, ByVal nCantidad As Integer) Dim sUltimaCelda As String Dim hojaActiva As String hojaActiva = ActiveSheet.Name ' para recordar la hoja activa Sheets("PRODUCTOS" ).Activate ' nos pasamos a la hoja de productos

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

20/30

' aqui nomas fijamos los rangos, pa que no marque error si no hay nada en la lista If Trim(Range("b2" ).value) <> "" Then sUltimaCelda = Range("b1" ).End(xlDown).Address Else sUltimaCelda = "b2" End If 'seleccionamos el rango de busqueda, para hacer mas rapido el proceso Range("b2:" & sUltimaCelda).Select ' esto es para localizar la clave que nos interesa... mmm estoy pensando que ' esta parte deberia ser mas corta. Selection.Find(What:=sDescripcion, After:=ActiveCell, LookIn:=xlValues _ , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:=False, SearchFormat:=False).Activate ' una vez localizada la clave, solo hacemos la resta With Me ActiveCell.Next.Next.value = Val(ActiveCell.Next.Next.value) - nCantidad End With 'finalmente, regresamos a la hoja anterior, esto es para evitar errores ActiveWorkbook.Sheets(hojaActiva).Activate End Sub ' aqui esta la pantalla pa que vean la identacion

y luego, en el mismo formulario de facturacion, en el evento click del boton cmdAceptar modificamos el codigo para que " trabaje " este nuevo procedimiento. esta modificacion consta de agregar solamente una linea dentro del bucle, asi nos aseguramos de que se ejecute por cada producto de la lista: Private Sub guardarFactura() Dim i As Integer Sheets("facturas" ).Activate ' activamos la hoja en la que vamos a trabajar If Trim(Range("A2" ).value) = "" Then ' localizamos la celda en donde vamos a empezar a insertar Range("A2" ).Activate Else Range("A1" ).End(xlDown)(xlDropDown).Activate End If ActiveCell.value = Me.txtNoFactura.Text ' insertamos los datos ActiveCell.Next.value = Me.txtFecha.Text ActiveCell.Next.Next.value = Me.txtRazon.Text For i = 0 To Me.lstCantidad.ListCount - 1

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

21/30

ActiveCell.Next.Next.Next.value = Me.lstDescripcion.List(i) ActiveCell.Next.Next.Next.Next.value = Me.lstPrecio.List(i) ActiveCell.Next.Next.Next.Next.Next.value = Me.lstCantidad.List(i) ActiveCell.Next.Next.Next.Next.Next.Next.value = Me.lstImporte.List(i) descontarExistencia Me.lstDescripcion.List(i), Val(Me.lstCantidad.List(i)) Next End Sub

pruebenlo y me dicen que px. descargar el libro de ejemplo: https://skydrive.live.com/? cid=6A76BCFD39519EAE&id=6A76BCFD39519EAE%21397#cid=6A76BCFD39519EAE&id=6A76BCFD39519EAE%21397

- quiero aprovechar para agradecer las 7000 visitas y sus putos 63 puntos, aunque con el karma eso ya vale madres.

Fuentes de Informacin
El contenido del post es de mi autora, y/o, es un recopilacin de distintas fuentes.

27
Me gusta

2
Tw ittear

0
Enviar

Anuncios Google

Soluciones Tecnologicas www.posperu.com - Asistencia, Acceso, Mini Proyector, Cerraduras, Contador de Billetes

Dar puntos

+10

208 Puntos
Votos: 46 - T! score: 5 / 10

Seguir

A favoritos

62
Favoritos

37.236
Visitas

11
Seguidores

42 comentarios
@Modjo hace 1 ao Buenisimo! Segu con estos post! @nayarchis hace 11 meses Mejor explicado no se puede, Gracias. Aprovechando tu que eres maestro en el excel, que tendria que hacer si quiero en el renglon de productos escribir una descripcion larga donde se ocupan mas de 1 fila, algo asi como: Compresor High Power Motor de 3.5, color rojo, garantia de 30 dias directamente con el vendedor y de un ao en centro de

www.taringa.net/posts/apuntes-y-monografias/12360881/Excel-_-VBA---Ejemplo-de-Facturacion_.html

22/30

You might also like