175446692 Excel VBA Ejemplo de Facturacion

March 21, 2018 | Author: Angel Jorge | Category: Microsoft Excel, Areas Of Computer Science, Software, Computer Programming, Computing


Comments



Description

Excel + VBA - Ejemplo de Facturación.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. 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 - 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: en excel vamos a hacer una plantilla identica a la factura. . cuando transpongamos la hoja reciclada con la factura original. para comprobar que la plantilla de excel corresponde al papel de tu factura.AJUSTANDO LA HOJA DE IMPRESION entonces. Finalmente. si todo corresponde. 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. sacale una copia fotostatica a tu factura e imprimimes la plantilla de excel en la copia. entonces podemos pasar al siguiente paso. los lugares queden perfectamente alineados. .Guarda el archivo para que no pierdas los cambios. (murphy dice que windows solo falla cuando tienes algo sin guardar en pantalla) DISEÑO DE LOS FORMULARIOS Pulsa ALT + F11 y se abre la ventana de VBA. La creacion de los formularios omitidos la debes hacer tu mismo.captura de productos . por lo que la captura de clientes y de productos la vamos a omitir para centrarnos en la impresion de la factura. la captura de datos simples esta explicado en mi post anterior.catalogo de clientes .captura de clientes . tambien vamos a omitir esa . la manera de cambiar las propiedades tambien esta explicado en el post anterior.impresion de factura .menu sin embargo.catalogo de productos .Los formularios a crear son: . IMPRESION DE FACTURA . bueno. pues esta en el post anterior. por ejemplo. no lo vamos a usar.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. Factura -----txtRazon -----txtDireccion -----txtRFC -----txtFecha -----txtNoFactura recuerda que a una etiqueta le corresponde a su lado un cuadro de texto con el mismo nombre. no se nota la influencia de .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. pero dado que hay que encontrar su referencia. y a que tambien varia su uso. width = 444 y height = 78 (estira el form para que quepa) -.inserta los siguientes controles con los siguientes nombres/propiedades: grbDatosCliente con caption = Datos del Cliente. la creacion de formularios e insercion de controles tambien sera omitida. vamos por el form mas culero: FACTURACION . Acomoda los espacios de manera que todo quede bien a la vista del usuario: . una vez aclarados los puntos anteriores. txtRazon va ubicado al lado derecho de lblRazon.agrega un nuevo formulario y le pones el nombre de frmFacturacion y caption . ubicacion y existencia con el uso de cada version de windows.explicacion. No vamos a agregar ningun control externo para hacer mas compatible este archivo entre ordenadores con diferentes sistemas operativos. 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. .55 y height = 162 lstImporte con width = 77. ubicalos a la misma altura uno junto de otro. ademas. mira nomas que chulo esta quedando el form: .25 y height = 162 en el orden de creacion.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. 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.25 y height = 162 lstPrecio con width = 67. -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. Este txt no lleva etiqueta. cuando es true se puede usar) -estos tres txt's ponles sus correspondientes etiquetas.5 y enabled = false txtIVA con width = 61. Le pones multiline = true.5 y enabled = false (estoy en en mexico.5 y enabled = false (cuando enabled es falso el control esta bloqueado para su uso. inserta un txtLetras debajo del lstCantidad y estiras su tamaño hacia la derecha hasta llegar a la lblSubtotal y luego estiras hacia abajo hasta coincidir con lblIVA. se nota????) txtTotal con width = 61. osea al txtSubtotal le pones a su izquierda un lblSubtotal con caption = Subtotal.continuamos con la ultima parte de su diseño: inserta tres cuadros de texto debajo inmediato de lstImporte con los siguientes atributos: txtSubtotal con width = 61.. y asi con los tres txt's -ademas. . enabled = false. escoge el control UserForm (osea. incluyendo el propio formulario pero con el nombre de UserForm.haz doble click encima del form en alguna region donde no tenga ningun control. escogemos en el lado izquierdo el control y del lado derecho el evento a programar. tons para programar un evento. .aparece la ventana de codigo. el formulario) . si te fijas. .-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: PROGRAMANDO LOS EVENTOS . en la parte de arriba del lado izquierdo tiene el nombre de todos los controles que contiene el formulario. y del lado derecho estan los eventos de los mismos. Las lineas de codigo que pongamos en ese espacio se van a ejecutar cuando formulario se active.VBA te va a insertar el encabezado y final del evento activate.luego escoge el evento ACTIVATE . . las lineas de abajo del evento click las podemos eliminar para no causar confusion.. Show ' mostrar el formulario de buscar clientes End Sub control cmdProductos.Text = Round((Val(Me.Text) + Val(Me.1 dTotal = dTotal + Val(Me.Text = Date End Sub a continuacion pulsa F5 y verifica que en el txtFecha se ha escrito la fecha automaticamente. Public Sub sumarImporte() ' suma solo la ultima lista.Text = Val(Me. evento Click Private Sub cmdBuscar_Click() frmBuscarCliente. aun sin ejecutar ningun evento. 2) Me.Value) = "" Then ' localizamos la celda en donde vamos a empezar a insertar .txtTotal.txtIVA. evento Click Private Sub cmdAceptar_Click() If MsgBox( “finalizar la captura de la factura?". osea.lstImporte. iva y total Me. vamos a crear tres procedimientos que no estan ligados al evento de ningun control.Value) If Me. escribimos dentro del evento activate del formulario las siguientes lineas: Private Sub UserForm_Activate() Me. evento Click Private Sub cmdProductos_Click() frmAgregarProducto.ListCount . continuamos con los eventos de los demas controles como sigue: control cmdAceptar.txtSubtotal.txtIVA.txtSubtotal. si hasta aqui todo va bien.Text = dTotal If dTotal > 0 Then ' aqui se hacen los calculos para el subtotal.chkImprimir.Text) End If End Sub Private Sub guardarFactura() Dim i As Integer Sheets( "facturas “ ). y que pueden ser ejecutados cuando se requiera.Text) / 100) * 16.Activate ' activamos la hoja en la que vamos a trabajar If Trim(Range( "A2" ). los importes Dim i As Integer Dim dTotal As Double dTotal = 0 For i = 0 To Me.lstImporte.y bueno.List(i)) Next Me.txtFecha.Show ' mostrar el formulario de agregar productos End Sub control UserForm.al final de la ventana de codigo.Text = Date ' para poner la fecha cuando se ejecute el form End Sub '-. evento activate Private Sub UserForm_Activate() Me.txtFecha.Value = True Then ImprimirFactura End Sub control cmdBuscar.txtSubtotal. vbQuestion + vbYesNo) = vbNo Then Exit Sub guardarFactura MsgBox (chkImprimir. txtFecha.txtDireccion.Value = Me.Select For i = 0 To Me.End(xlDown)(xlDropDown).Activate End If ActiveCell.Value = Me.aqui las capturas .List(i) ActiveCell.lstCantidad.lstCantidad.txtNoFactura.Value = Me.lstCantidad.Activate Next Range( “g19” ).List(i) ActiveCell.Text ' insertamos los datos ActiveCell.Value = Me.PrintOut Copies:=1.Next.Text Range( “g20” ).Next.Value = Me.Next.ListCount .Next.Value = Me.lstImporte.Next.Next.txtRazon.Text Range( “g21” ).Next.Next.List(i) ActiveCell.txtLetras.Value = Me.List(i) ActiveCell.Next.lstPrecio.lstCantidad.txtIVA.Next.Next.Next.Value = Me.Next.Value = Me.Text Range( “b20” ).Activate Else Range( “ A1 “ ).Next.txtRazon.List(i) ActiveCell.Next.Next.Next.lstDescripcion.Value = Me.List(i) Next End Sub Private Sub ImprimirFactura() ' esta hace lo mismo pero con la hoja de impresion Dim i As Integer Sheets( “IMPRESION” ).Text Range( “b8” ).Text For i = 0 To Me.Next.Next.List(i) ActiveCell(xlDropDown).Next.Next.txtFecha.lstPrecio.Activate Range( "a1:h25" ).Next.Value = Me.Value = Me.txtSubtotal.List(i) ActiveCell. Collate:=True.Next.ListCount ActiveCell.Value = Me.Value = Me.Next.Text Range( “C2” ).Range( "A2" ).Next.Value = Me.Next.SelectedSheets.Next.Next.Next.List(i) ActiveCell.Text ActiveWindow.ClearContents ' limpiamos la hoja para la nueva impresion (esta linea es necesaria) Range( “g2” ).Text ActiveCell.lstPrecio.Next.1 ActiveCell.Value = Me.lstImporte.txtTotal.Next.Value = Me.Text Range( “C3” ).Next.lstDescripcion. IgnorePrintAreas:=False End Sub .Next.Value = Me.Value = Me. . cierra el formulario frmFacturacion .en el ejemplo no estoy incluyendo la funcion para convertir los numeros en texto porque es muy largo. en el archivo de ejemplo que dejo al final si esta implementada.agregale los siguientes controles.agrega otro formulario llamado frmBuscarCliente con caption = Buscar Cliente . sin embargo.NOTACION . CARGAR CLIENTES . y eso es todo con respecto a la facturacion. lblClientes con caption = Clientes cmbClientes con style = 2 frmStyleDropDownList (lista para escoger items) cmdAceptar con caption = Aceptar .-. Value) Next End Sub asi se debe ver en la ventana de codigo . MatchCase:=False.Value . SearchOrder:=xlByRows.Clear Sheets( “CLIENTEs” ).Next.ubicalos de la siguiente manera: lblClientes en la parte mas arriba.Next. evento Activate Private Sub UserForm_Activate() Dim sUltimaCelda As String Me. SearchDirection:= _ xlNext. After:=ActiveCell.Value .Activate End Sub control cmdAceptar.Text = ActiveCell.cmbClientes.Cells Me.cmbClientes.txtRazon.cmbClientes.Text. LookAt:=xlPart. los eventos: control cmdClientes.Address For Each f In Range( “A2:" & sUltimaCelda). evento Change Private Sub cmbClientes_Change() Cells.Value End With Unload Me End Sub control UserForm.Find(What:=Me. SearchFormat:=False).Text = ActiveCell.AddItem (f.Value) = "" Then Me.End(xlDown).AddItem (Range( “A2” ).Value) = "" Then Exit Sub If Trim(Range( “A3” ).Next. LookIn:= _ xlFormulas.Text = ActiveCell. evento Click Private Sub cmdAceptar_Click() With frmFacturacion .txtRFC.Value) Exit Sub End If sUltimaCelda = Range( “A1” ).txtDireccion.cmbClientes. luego abajo el cmbClientes y abajo de este pones el cmdAceptar.Activate If Trim(Range( “A2” ). solo que vamos a llenar las listas.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 diseño: . .cierra los formularios abiertos .y con eso ya podemos cargar a los clientes en la factura. AGREGAR PRODUCTOS a la factura es similar a cargar los clientes.agrega un nuevo formulario llamado frmAgregarProducto y le pones caption = Agregar Productos . lstCantidad.lstImporte.AddItem (Me.Next.Select Selection.cmbClave.txtPrecio.lstPrecio.Text))) End With frmFacturacion. LookIn:=xlValues _ .txtDescripcion.Text) = "" Then MsgBox ( “Debes ingresar la cantidad!!” ): Exit Sub If Me.cmbClave.Address Else sUltimaCelda = "A2" End If Range( “A2:" & sUltimaCelda).Find(What:=Trim(Me.txtPrecio. MatchCase:=False.Next.txtCantidad.txtDescripcion.txtDescripcion.txtPrecio.lstDescripcion.Text) . LookAt:=xlPart.Value .cmbClave.Text = ActiveCell.Activate With Me .Text = ActiveCell. SearchFormat:=False).Next.Text = "" Me.txtDescripcion.sumarImporte Me.Value End With End Sub Private Sub cmdAgregar_Click() If Trim(Me.txtCantidad. SearchOrder:=xlByRows.Text) .txtPrecio.Text) .Value = "" Then Exit Sub Dim sUltimaCelda As String Me.Text = "" If Me.Text = "" .txtCantidad.txtDescripcion.Text).AddItem (Me.AddItem (Me.End(xlDown).y ahora el codigos de los eventos: Private Sub cmbClave_Change() If Me.Text = "" Then MsgBox ( “Debes elegir un producto!!” ): Exit Sub With frmFacturacion .Text) * Val(Me.ListCount > 1 Then sUltimaCelda = Range( “A1” ).AddItem (Str(Val(Me. After:=ActiveCell. SearchDirection:= _ xlNext. Value) = "" Then Exit Sub If Trim(Range( “A3” ).cmbClave.cmbClave.ListIndex = -1 Me.AddItem (Range( “A2” ).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.Me.cmbClave.End(xlDown).aqui estan las capturas pa que vean la identacion .Value) Exit Sub End If sUltimaCelda = Range( “A1” ).Cells Me.cmbClave.Clear Sheets( “PRODUCTOS" ).Value) = "" Then Me.Value) Next End Sub .txtPrecio.txtCantidad.Address For Each f In Range( “A2:" & sUltimaCelda).Text = "" Me.AddItem (f.cmbClave.SetFocus End Sub Private Sub txtCantidad_KeyPress(ByVal KeyAscii As MSForms.Activate If Trim(Range( “A2” ).Text = "" Me. . ubicalos en el orden de creacion uno al lado de otro este es el aspecto que podria tener: .Show End Sub y hasta aqui.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 . ..en el evento Click del control cmdFacturar escribe lo siguiente: Private Sub cmdFacturar_Click() frmFacturacion. show .en la hoja de impresion. .quit . Tambien tienes que activarla cuando cierres el formulario.visible = false.una macro o boton para ejecutar el formulario menu desde excel .como podras observar.al hacer click en una lista. esto desconecta la pantalla de excel y se queda congelada mientras trabajas en el formulario.para controlar el texto que aparece en el statusbar de excel. . sino no vas a poder descongelar la pantalla.para cerrar el libro cuando cierres el menu pones en el evento queryunload del menu la siguiente linea: activeworkbook.screenupdating = false.save ' para guardar los cambios hechos application. usas la funcion application.el nombre del libro no importa LO QUE DEBES IMPLEMENTAR TU MISMO .para ejecutar el formulario de manera automatica al abrir el libro. tambien lo debes hacer en el codigo. TIPS .el formulario de captura de productos . No olvides poner en true de nuevo esta opcion en el evento queryunload del formulario. . el codigo hace referencia directa a ciertas celdas y hojas. en el explorador de objetos das doble click en el objeto Thisworkbook y en el evento open le pones frmMenu. las otras tres listas deben activar el item que esta en la misma direccion.la funcion application.PARA FINALIZAR . en el entorno de VBA.te molesta que los cambios de hojas e insercion sean visibles detras del formulario?? entonces en el evento activate del menu ponle application. Si cambias el nombre de una hoja.el formulario de captura de clientes . debes quitar las lineas y texto que sirvieron para checar la factura con la plantilla sin mover los tamaños de las celdas. es igual a la anterior pero esta esconde definitivamente a excel de windows dejando solo el formulario activo.statusbar = "lo que quieras escribir" . . . . . . . . . . MODIFICACION PARA DESCONTAR EXISTENCIAS CUANDO SE IMPRIMA O GUARDE LA FACTURA . agrega una encabezado mas con el titulo existencia .en la hoja de productos. ese procedimiento sera el encargado de que por cada producto que se encuentre en la factura. hay que agregar un procedimiento mas al formulario de facturacion.End(xlDown). ByVal nCantidad As Integer) Dim sUltimaCelda As String Dim hojaActiva As String hojaActiva = ActiveSheet. sus existencia sea descontada de la hoja.Name ' para recordar la hoja activa Sheets("PRODUCTOS" ). ese procedimiento es sencillo: Private Sub descontarExistencia(ByVal sDescripcion As String. pa que no marque error si no hay nada en la lista If Trim(Range("b2" ).Activate ' nos pasamos a la hoja de productos ' aqui nomas fijamos los rangos.metele algunos datos.Address Else sUltimaCelda = "b2" End If 'seleccionamos el rango de busqueda. estos deben ser numeros (pues es existencia) ahora.value) <> "" Then sUltimaCelda = Range("b1" ). para hacer mas rapido el proceso . esto es para evitar errores ActiveWorkbook.value) . mmm estoy pensando que ' esta parte deberia ser mas corta. MatchCase:=False. SearchDirection:= _ xlNext.Next.Find(What:=sDescripcion. en el mismo formulario de facturacion. SearchOrder:=xlByRows... .Next.Next.Sheets(hojaActiva). regresamos a la hoja anterior. LookAt:=xlPart.value = Val(ActiveCell.Activate ' una vez localizada la clave. After:=ActiveCell. en el evento click del boton cmdAceptar modificamos el codigo para que " trabaje " este nuevo procedimiento. solo hacemos la resta With Me ActiveCell.nCantidad End With 'finalmente.Range("b2:" & sUltimaCelda).Next.Activate End Sub ' aqui esta la pantalla pa que vean la identacion y luego.Select ' esto es para localizar la clave que nos interesa. LookIn:=xlValues _ . Selection. SearchFormat:=False). List(i) descontarExistencia Me.lstCantidad.List(i)) Next End Sub pruebenlo y me dicen que px.1 ActiveCell. asi nos aseguramos de que se ejecute por cada producto de la lista: Private Sub guardarFactura() Dim i As Integer Sheets("facturas" ).List(i) ActiveCell.value = Me.value = Me.lstImporte.List(i).Text ActiveCell.Activate Else Range("A1" ).value) = "" Then ' localizamos la celda en donde vamos a empezar a insertar Range("A2" ).value = Me.txtRazon.Next.End(xlDown)(xlDropDown).live.value = Me.Text For i = 0 To Me.txtNoFactura.value = Me.Activate End If ActiveCell.Next.lstPrecio.Next.Next.Next.Next.Next.List(i) ActiveCell.lstDescripcion.Next.com/?cid=6A76BCFD39519EAE&id=6A76BCFD39519EAE %21397#cid=6A76BCFD39519EAE&id=6A76BCFD39519EAE%21397 .Next.value = Me.Next.Text ' insertamos los datos ActiveCell.ListCount .lstDescripcion.Next.lstCantidad.List(i) ActiveCell.Next.Next.txtFecha.esta modificacion consta de agregar solamente una linea dentro del bucle.Next. descargar el libro de ejemplo: https://skydrive.Next.lstCantidad.Next.value = Me.Next. Val(Me.Next.Next.Activate ' activamos la hoja en la que vamos a trabajar If Trim(Range("A2" ).Next.Next. Comentarios @Modjo hace 2 años . Buenisimo! Seguí con estos post! . saludos... en cuanto a la impresion. aqui ya tienes que aplicar tu creatividad al diseño de la hoja. color rojo.. no hay problema porque las celdas tienen bastante espacio como para poner esa descripcion. gracias @kill_spinal hace 2 años patyandsergi dijo: Hola muy bueno el post pero no puedo ver las imagenes ni descargar el ejemplo. .5. gracias hola.. las columnas son los campos.... precio e importe. de esta manera. eso se debe a que el fin de semana desconecte el servidor para hacer algunas mejoras. lo que tienes que hacer es configurar las celdas de la descipcion para que se ajusten a dos o tres renglones de altura. pero ahora ya esta en linea y no debes tener ningun problema.. algo asi como: Compresor High Power Motor de 3.. en cuanto a la captura. Gracias.....@nayarchis hace 2 años Mejor explicado no se puede.. Aprovechando tu que eres maestro en el excel. @mariosss123 hace 2 años +10 buen post @kill_spinal hace 2 años grax @patyandsergi hace 2 años Hola muy bueno el post pero no puedo ver las imagenes ni descargar el ejemplo. que tendria que hacer si quiero en el renglon de productos escribir una descripcion larga donde se ocupan mas de 1 fila.. garantia de 30 dias directamente con el vendedor y de un año en centro de servicio.. tienes una fila con tres renglones en la descripcion pero un renglon para cantidad. @kill_spinal hace 2 años las filas son registros. @patyandsergi hace 2 años Muchas gracias!!! @xlalokpox hace 1 año Y Los registros o la base de datos de toda la facturación como lo manejas? Se pueden obtener reportes a partir de esa baso de datos como consumo por cliente o control de stock? @kill_spinal hace 1 año xlalokpox dijo: Y Los registros o la base de datos de toda la facturación como lo manejas? Se pueden obtener reportes a partir de esa baso de datos como consumo por cliente o control de stock? La &quot. yo hice unas modificacones a tu archivo. la manejas como se te pegue la gana. por lo tanto. y cuando pongo un producto con precio en numeros decimales y lo multiplica por la cantidad del producto en el listbox lstimporte me pone un numero entero. . @sebaakira hace 1 año Hola. capta &quot. que puede ser? Primero. Bastaria crear las macros y formularios necesarios para este fin. Si tu pregunta es debido a que quieres manejar toda la informacion en formularios sin entrar a las hojas. tengo una duda. tengo entendido que es una de las funciones de excel. No me pasa por la cabeza a alguien que no se le haya ocurrido usar una tabla dinamica o filtros antes de hacer tu pregunta. yo hice unas modificacones a tu archivo. y cuando pongo un producto con precio en numeros decimales y lo multiplica por la cantidad del producto en el listbox lstimporte me pone un numero entero. pues es una hoja de calculo y no creo que no sepas algo tan basico como excel. ya que la interfaz es solo un acceso directo a cada funcion de vba. en la hoja debes poner el formato correcto de las celdas. Claro que se pueden hacer reportes apartir de los datos obtenidos. que puede ser? @kill_spinal hace 1 año sebaakira dijo: Hola. es posible. tengo una duda. es decir no me toma los decimales y el total me lo calcula sin los decimales. es decir no me toma los decimales y el total me lo calcula sin los decimales. todo lo que haces manualmente en una hoja tiene una segunda forma de hacerlo mediante el codigo vb. aqui lo que debes hacer es cambiar el formato de las celdas de los precios o totales a formato de numero con dos decimales. el string de la celda. La lista no debe tener problemas ya que solo &quot. ya que estas traen por default el formato general.base de datos&quot. pruebalo y me comentas. saludos. @vyktox hace 1 año ya no esta disponible @kill_spinal hace 1 año vyktox dijo: ya no esta disponible . pues lo he modificado con la respuesta a tu pregunta. revisa de nuevo el post. pero estaba comiendo pib de dia de muertos con mi abuela y ahora que regrese a la compu he leido tu comentario. al principio tengo problemas con la fecha Private Sub UserForm_Activate() Me. el servicio es intermitente pero la mayor parte del tiempo esta disponible.Text = Date ' para poner la fecha cuando se ejecute el form End Sub . @Big_FidoX hace 1 año Hola! Como haría para crear un stock y se me vaya descontando según los productos que venda? @kill_spinal hace 1 año Big_FidoX dijo: Hola! Como haría para crear un stock y se me vaya descontando según los productos que venda? disculpa la tardanza.he estado teniendo unos problemas con mi servidor. saludos. tengo unos problemas cuando quiero ejecutar la factura. saludos. despues si elimino la rutina de DATE me salta el depurador al buscar cliente y los productos me pone esto: Private Sub UserForm_Activate() Dim sUltimaCelda As String .txtFecha. @patyandsergi hace 1 año Hola. Clear .Me.cmbClave. Sheets(&quot.Activate .PRODUCTOS&quot . value) = &quot. Then Exit Sub .A2&quot .&quot.If Trim(Range(&quot. Then .A3&quot .If Trim(Range(&quot.value) = &quot.&quot. Me.value) .A2&quot .cmbClave.AddItem (Range(&quot. Exit Sub End If . sUltimaCelda = Range(&quot.A1&quot .Address .End(xlDown). AddItem (f.A2: quot &amp.v @kill_spinal hace 1 año patyandsergi dijo: Hola.txtFecha.CellsMe. al principio tengo problemas con la fecha Private Sub UserForm_Activate() Me. tengo unos problemas cuando quiero ejecutar la factura.Text = Date ' para poner la fecha cuando se ejecute el form End Sub . ltimaCelda). despues si elimino la rutina de DATE me salta el depurador al buscar cliente y los productos me pone esto: Private Sub UserForm_Activate() Dim sUltimaCelda As String .For Each f In Range(&quot.cmbClave. Me.cmbClave.Clear . PRODUCTOS&quot .Activate .Sheets(&quot. If Trim(Range(&quot. Then Exit Sub .A2&quot .value) = &quot.&quot. value) = &quot. Then .If Trim(Range(&quot.A3&quot .&quot. value) .A2&quot .Me.AddItem (Range(&quot.cmbClave. Exit Sub End If . sUltimaCelda = Range(&quot.End(xlDown).Address .A1&quot . si cambiamos los nombres de las hojas o movemos las columnas que usamos tendremos errores por doquier. probablemente sea un pequeño detalle pero que no permita que se ejecuten las sentencias siguientes.cmbClave.AddItem (f. ltimaCelda). aprovecho tambien para comentarte que el codigo hace referencia directa a hojas y rangos especificos. es necesario que me digas el msg de error que te marca desde el principio. @mibabilonia hace 1 año bueno @POTTERSCAR hace 1 año HOLA TENGO UN PROBLEMA CON EL VINCULO DE LAS HOJAS A LA HORA DE METER LOS CLIENTES Y LOS PRODUCTOS ME SALE ERROR 91 ESTO ME PASA POR QUE NO ESTOY EN LA MISMA HOJA DE EXEL QUE EN LA QUE ESTA TRABAJANDO LA MACRO SOLO QUE NO C COMO ACERLE PARA QUE LA LLAME CUANDO LE DOY AL BOTON DE BUSCAR CLIENTES O AGREGAR ´PRODUCTO LA VERDAD NO C MUCHO DE EXEL PERO TU GUIA ESTA MUY BIEN EXPLICADA Y SOLO ME FALTA ESO YA CREE LOS FORMULARIOS DE CAPTURA AGRADESCO TU AYUDA @tonys32 hace 1 año @kill_spinal hace 1 año POTTERSCAR dijo: HOLA TENGO UN PROBLEMA CON EL VINCULO DE LAS HOJAS A LA HORA DE METER LOS CLIENTES Y LOS PRODUCTOS ME SALE ERROR 91 ESTO ME PASA POR QUE NO ESTOY EN LA MISMA HOJA DE EXEL QUE EN LA QUE ESTA TRABAJANDO LA MACRO SOLO QUE NO C COMO ACERLE PARA QUE LA LLAME CUANDO LE DOY AL BOTON DE BUSCAR CLIENTES O AGREGAR ´PRODUCTO LA VERDAD NO C MUCHO DE EXEL PERO TU GUIA ESTA MUY BIEN EXPLICADA Y SOLO ME FALTA ESO YA CREE LOS FORMULARIOS DE CAPTURA AGRADESCO TU AYUDA .CellsMe.For Each f In Range(&quot.v hola.A2: quot &amp. Hola. entonces. por ejemplo: estamos en la hoja clientes y necesitas acceder a los datos de la hoja productos. te recomiendo que cuando entres a un procedimiento o macro.name ' aqui guardamos el nombre la hoja sheets(&quot.sheets(sHojaActiva). en tu procedimiento lo primero es declarar una variable que guarde el nombre de la hoja en la que estas actualmente ANTES DE PASARTE A PRODUCTOS: dim sHojaActiva as string ' la variable para guardar el nombre sHojaActiva = activesheet. ). @POTTERSCAR hace 1 año gracias me sirvio se soluciono el problema solo que ahora tengo otro jeje espero me puedas ayudar mira en guardar factura .activate ' ahora si nos pasamos con tranquilidad a productos ' y aqui pones todo lo que quieres hacer en la hoja de productos ' y cuando termines. pruebalo y comentalo para que los demas chequen si les sirve.activate 'esta debe ser la ultima linea. saludos.productos&quot. lo primero que hagas es guardar el nombre de la hoja activa y al final del procedimiento. te regresas a la hoja clientes para que no te marque ese error activeworkbook. la ultima linea debe regresar a la hoja anterior. txtFecha.Text = Date me sale error de compilacion : no se puede encontrar proyecto o la biblioteca y me señala date prove cambiarla por otra ras como calendar o hoy() pero no funciona jeje mi office es 2010 gracias espero respuesta @POTTERSCAR hace 1 año ya resolvi el error al guardar factura solo quite la funcion trim y ya no me dio error falta lo de la fecha y si me puedes decir como quitar el redondeo en el subtotal para que me de cantidades exactas x favor gracias @kill_spinal hace 1 año POTTERSCAR dijo: .me dice error de compilacion: no se puede encontrar proyecto o la biblioteca y me señala trim esta parte no la e modificado nada pero parece que no me reconoce el objeto esto lo ace justo despues que pongo aceptar en el cuadro de facturacion y aparte de ese en la opcion de Private Sub UserForm_Activate() Me. enviame un mp para darte mi direccion.txtFecha.gracias me sirvio se soluciono el problema solo que ahora tengo otro jeje espero me puedas ayudar mira en guardar factura me dice error de compilacion: no se puede encontrar proyecto o la biblioteca y me señala trim esta parte no la e modificado nada pero parece que no me reconoce el objeto esto lo ace justo despues que pongo aceptar en el cuadro de facturacion y aparte de ese en la opcion de Private Sub UserForm_Activate() Me. @Edward_cd hace 1 año Excelente aporte + 10 .Text = Date me sale error de compilacion : no se puede encontrar proyecto o la biblioteca y me señala date prove cambiarla por otra ras como calendar o hoy() pero no funciona jeje mi office es 2010 gracias espero respuesta pasame tu archivo por mail. . @natgok hace 1 año hermano tengo un problemota. cual es el error o cual es la falla? @natgok hace 1 año hermano la cosa es que cree las agregar clientes y agregar productos. no logro poner agregar clientes y agregar productos.. si tienes dudas no vaciles en comentarmelo.. @kill_spinal hace 1 año natgok dijo: hermano tengo un problemota.... no logro poner agregar clientes y agregar productos. pero cuando intento meter la informacion y darle aceptar para que la guarde me dice se ha producido el error 9 en tiempo de ejecucion subindice fuera del .....@natgok hace 1 año gracias amigo eres increible me acabas de salvar un dia de proyecto que no se me ocurria que hacer +5 y +5 en el otro post @kill_spinal hace 1 año natgok dijo: gracias amigo eres increible me acabas de salvar un dia de proyecto que no se me ocurria que hacer +5 y +5 en el otro post Grax. intervalo y le doy depurar y me aparece esto en amariyo . Then .CAPTURA&quot .Range(&quot.A2&quot .&quot.value = &quot.If Sheets(&quot. la cosa es que soy nuevo en esto de excel y no se s . Private Sub cmdAceptar_Click() . If Me. Then MsgBox (&quot.&quot. Razon no puede estar vacio&quot : Exit Sub .txtRazon.Text = &quot. Text = &quot.txtRFC.RFC no puede estar vacio&quot : Exit Sub .&quot.If Me. Then MsgBox (&quot. Text = &quot. Then MsgBox (&quot.If Me.txtDireccion.&quot.Direccion no puede estar vacio&quot : Exit Sub . . Range(&quot.If Sheets(&quot.CAPTURA&quot .A2&quot . Then .value = &quot.&quot. CAPTURA&quot .A2&quot .value = Me.txtRazon.Text .Sheets(&quot.Range(&quot. Text .Range(&quot.Sheets(&quot.B2&quot .CAPTURA&quot .txtRFC.value = Me. Sheets(&quot.CAPTURA&quot .Text .txtDireccion.C2&quot .Range(&quot.value = Me. Else . CAPTURA&quot .Text .value = Me.Range(&quot.End(xkdown)(xlDropDown).txtRazon.A1&quot .Sheets(&quot. txtRFC.Sheets(&quot.Text .CAPTURA&quot .value = Me.Next.End(xlDown).A1&quot .Range(&quot. &quot..Sheets(&quot. pero cuando intento meter la informacion y darle aceptar para que la guarde me dice se ha producido el error 9 en tiempo de ejecucion .Text = &quot.End(xlDown) Next.Me.A1&quot.txtDireccion.Me.txtRazon @natgok hace 1 año por aquello lo que quiero poner es una forma de ingresar datos nuevos en el menu poner agregar clientes y agregar productos @natgok hace 1 año @kill_spinal hace 1 año natgok dijo: hermano la cosa es que cree las agregar clientes y agregar productos.Next.CAPTURA&quot..txtRFC.txtRazo Text = uot.Me.&quot.txtDireccion.&quot.Ran e(&quot.T xtEnd IfMe.value = Me.Text = &quot. CAPTURA&quot .subindice fuera del intervalo y le doy depurar y me aparece esto en amariyo If Sheets(&quot. value = &quot.. Then la cosa es que soy nuevo en esto de excel y no se .A2&quot .&quot.Range(&quot. Then MsgBox (&quot.Text = &quot. Razon no puede .txtRazon.si Private Sub cmdAceptar_Click() If Me.&quot. &quot.estar vacio&quot : Exit Sub If Me.Text = &quot. Then MsgBox (&quot.RFC no puede estar .txtRFC. vacio&quot : Exit Sub If Me.txtDireccion.Direccion no puede .Text = &quot. Then MsgBox (&quot.&quot. value = .CAPTURA&quot .estar vacio&quot : Exit Sub If Sheets(&quot.A2&quot .Range(&quot. txtRazon.Range(&quot.A2&quot .value = Me.&quot.&quot.Text .CAPTURA&quot . Then Sheets(&quot. value = Me.CAPTURA&quot .Range(&quot.txtRFC.Text .Sheets(&quot.B2&quot . Range(&quot.Text Else .txtDireccion.CAPTURA&quot .value = Me.Sheets(&quot.C2&quot . Range(&quot.A1&quot .value = .Sheets(&quot.CAPTURA&quot .End(xkdown)(xlDropDown). End(xlDown).A1&quot .value = .Range(&quot.Next.txtRazon.CAPTURA&quot .Text Sheets(&quot.Me. pero me gusraria que me envies tu archivo para poder corregir el problema. enlace no funciona. yo tengo unproblema con esta parte: For Each f In Range(“A2:&quot. gracias.&quot subindice fuera del intervalo quiere decir que estas tratando de usar una celda que no existe en excel. enlace no funciona. siendo que solo existe hasta la A1048576.AddItem (f..Range(&quot.A1&quot. sUltimaCelda).Value) Muchas Gracias @POOL12 hace 1 año podrias volver a subir el archivo. aunque no te sirvan . gracias.CAPTURA&quot.txtDire ccion.txtRazon. la celda en el numero 1048576 + 1 = 1048577..Text = &quot. entonces va a la primera disponible y de ahi baja hasta encontrar la ultima celda usada.. osea. no me deja descargar el archivo.asegurate que las hojas tienen el nombre correcto . saludos.. ese error se ocasiona cuando VBA trata de buscar la siguiente celda para poner nuevos datos.Pon al menos dos registros. . mandame un mp para darte mi correo. @kill_spinal hace 1 año POOL12 dijo: podrias volver a subir el archivo.cmbOT.Me. no me deja descargar el archivo. . por ejemplo.Text End If Me.Aqui me marca un error de compilacion (se esperaba: Separador de Listas Me.checa que los registros comienzan en la columna A ahora voy de salida. A1048577.Cells &lt. pero esta celda no existe y por eso marca el error.End(xlDown). pero si no hay celdas usadas te va a devolver la ultima fila de la hoja +1.------. @gustavo_tovar hace 1 año Hermano.Text Sheets(&quot. &amp.txtRFC. eres un master en esto.Next.value = Me.Next. saludos. @kingtrase hace 1 año toma mis 10! asi eres NFU!!!! jejeje acuerdate que hay que ser generosos!!! @kill_spinal hace 1 año +1 kingtrase dijo: toma mis 10! asi eres NFU!!!! jejeje acuerdate que hay que ser generosos!!! graxxx. Excelente @mananaempiezo hace 11 meses excelente!!!!!!! gracias la verdad sos muy genero por compartir este trabajo.lo unico que no me funciono es cuando guardas la factura no me guarda todos los articulos ingresados solamente el ultimo Cargar 1 más . +10 @Sebasmza hace 1 año impresionante gracias capo @kill_spinal hace 1 año Sebasmza dijo: impresionante gracias capo gracias.estaba cambiando mi servidor y de repente me he ocupado en otras cosas.. ya mañana debe estar en funcionamiento normal. ya hasta habia dejado de postear @jorgitoroyo hace 1 año excelente. @marioneldo hace 1 año Maestro!!!!!!!!! si se puedieran dar 1000 puntos te los dejaria.. justo lo que estaba necesitando. GRACIAS @duckyboy hace 2 meses Hola amigo. debes agregar los textbox's y label's para cada campo. en el procedimiento de imprimir.. la referencia (o clave) ya que necesito implementar eso en un pequeño proyecto similar que tengo para la Universidad y me salvarías la vida. aunque te falto otra hoja donde guardes los conceptos de la factura.. debes tomar nota de la direccion de la celda en donde debe ir cada nuevo dato que quieres imprimir.. descripción. . y obviamente. En el form de facturacion. me ahorraste un 80 % del trabajo de escribir codigo. y un modulo mas de consultas modificaciones. quisiera saber si me podrías ayudar a que en la factura final (impresión) aparezca además de cantidad. pero bueno eso es a necesidad de cada quien.gracias! @kill_spinal hace 2 meses Buenas noches. la ultima es la que se queda grabada.....@mananaempiezo hace 10 meses +1 ok lo reviso y a ver que paso gracias y saludos @mananaempiezo hace 4 meses retome el tema de la factura para armarlo a mis necesidades lo habia abandonado.. estoy corrigiendo el ejemplo para evitar ese problema. por ejemplo: supongamos que tu dato referencia esta en el textbox txtRef y que en tu hoja de impresion ese dato . gracias. luego. @kill_spinal hace 4 meses +2 archivo de descarga corregido para insertar correctamente los datos de la factura. lo que debes hacer es: en tu formato de impresion.cuando guardo la factura no me guarda todos los articulos ingresados solamente el ultimo.me baje el ejemplo completo y me pasa lo mismo alguna idea de que puede ser gracias @kill_spinal hace 4 meses +1 debe ser la linea que activa la siguiente linea para insertar el contenido. @anddy10 hace 3 meses Todo esta excelente. en unos minutos debe estar el archivo listo para descargar. vas a agregar las lineas correspondientes para que el dato se copie del form a la hoja de impresion. valor unitario y total.vuelvo a tener el mismo problema. la condicion no se cumple y por eso inserta todos los registros en la misma linea... @duckyboy hace 2 meses Hola, muchas gracias...ya pude resolver ese problemita; ahora me surge otro...tengo varios clientes (RFC en tu ejemplo) y para cada uno de ellos tengo precios diferentes; ahora quisiera saber sí es posible que al escoger el cliente en el userform automáticamente la columna en la que están los precios cambie @kill_spinal hace 2 meses Buenas noches. En ese caso, te recomiendo crear una hoja que se llame PRECIOS y que contenga una columna con la clave del producto y una columna por cada lista de precio que necesite. A la hoja clientes hay que agregarle una columna mas con el numero de precio ( o columna ) que le corresponde. Luego, al momento de cargar la info del cliente, tambien te cargas el numero de precio, y para cada producto que se teclee, hay que buscar su precio en la hoja de precios ( en la columna correspondiente al @totin023 hace 2 meses bueno hay que probarlo......muy bien pero como te gusta algo el alcohol...... @caso601 hace 2 meses Mi estimado, como hago para que al momendo de facturar, me asigne automaticamente el numero de factura en consecutivo, saludos y gracia por este magnifico aporte. @kill_spinal hace 2 meses txtNumfactura.Text = direccion de la celda que tiene la ultima factura esta linea la debes poner en el evento que se ejecuta cuando se muestra el form, y tambien cada vez que se guarde correctamente una factura. @Daviciito7 hace 1 mes (soy un seguidor tuyo)excelente man muy bueno para mi proyecto quizás me exonere del examen final con esta factura no se si estoy siendo grosero al pedirte que me lo pases ¬¬ pero falta mucho todavía juasjuas,por cierto dime yo solo quiero tener un formulario en la hoja 1 y que me pase los datos a la hoja2 de forma horizontal con los datos de A1 HASTA G1 ( que son los que necesito) seria lo mismo pero quitando los codigos con textos imprimir? @kill_spinal hace 1 mes El link del archivo esta al final de la hoja. La funcion que necesitas esta incluida en el boton cmdGuardar, solo debes adecuarla a las celdas que elijas como destino. Normalmente, este tipo de funciones trabajan con un bucle for o while. Revisa la funcion, saca tus conclusiones e intenta guardar algo simple. Si tienes mas dudas o no quedo como lo necesitas, enviame un mp con tu funcion para revisarla y devolverte mis comentarios. saludos. @_aLe_C hace 1 mes Hola, gracias por el aporte, soy nueva en VBA y quería consultarte sobre algunas modificaciones si me podrías ayudar: - Contador de facturas automático. - Guardar como .PDF Muchas gracias de antemano. Saludos. @kill_spinal hace 1 mes Para tener un contador de facturas, agregas una columna que sea incremental y que guarde solo numeros, tal que, al momento de guardar una factura, tambien se guarde el numero del contador; al final, es una columna mas como cualquier otra. Con respecto a la conversion en pdf, aun no he programado algun codigo para ese proposito ya que prefiero usar la impresora del dopdf por cuestion del formato final, sin embargo, el codigo lo puedes encontrar con una simple busqueda en google. saludos. @joseadrian50 hace 1 mes Buenas Tardes, primeramente quisiera agradecerte por el post que esta muy bueno, segundo quisiera solicitarte el link de tu anterior post donde explicas la introducion de registros simples para el caso de registro de clientes y productos. gracias por la informacion @kill_spinal hace 1 mes http://www.taringa.net/posts/apuntes-y-monografias/12345898/Excel-VBA---Formulario-de-Captura.html @tiradoleon hace 1 mes excelente MAESTRO, nunca habia puesto un comentario aquí, pero usted vale eso y más, gracias por stu explicación. @netcluster hace 29 días Estimado, excelente aporte. Una consulta, he estado trabajando en el código y me he quedado pegado en algo (soy nuevo en esto de vba). Quiero agregar los productos desde un combo, pero no usando código, sino el nombre de los productos (para el caso presentado sería la columna descripción) pero al trabajar con la instrucción selection.find se cae el sistema. Help please. @kill_spinal hace 29 días +1 La busqueda por descripcion o por codigo es igual, ya que excel realiza una busqueda de datos en el interior de las celdas seleccionadas... en el codigo del ejemplo, primero se selecciona la columna del codigo y luego se lanza la instruccion find, la cual va a buscar el dato en la columna seleccionada; por lo tanto, si ahora vas a buscar por descripcion, entonces tambien debes seleccionar solo la columna de la descripcion. Si aun asi te sigue dando problemas entonces enviame tu archivo a kill_sp @netcluster hace 29 días @kill_spinal muchas gracias, ahora revisé el código con más detención y encontré mi error. Tremendo aporte @JoaoM hace 28 días Me viene como dedo en c*l* de yegua, jajajajaj Tengo una interrugante; lo probe y veo que me sirve para lo que necesito, muy bueno pero, me dá un error en la linea descontarExistencia Me.lstDescripcion.List(i), Val(Me.lstCantidad.List(i)) del evento Private Sub guardarFactura() Procedo a llenar factura y le doy guardar, viene el error Procedo a llenar factura y le doy guardar y marco la casilla Imprimir, viene el error Tambien, voy a la hoja Imprimir y veo siempre la misma que tiene al bajar el archivo, sea con la casilla marcada o no. Puedes darme alguna indicacion de que tengo que hacer para no presentar dicho error? Y a la segunda ¿es así? o algo está mal? que tengo mal o que tengo que agrgar al libro? Gracias, 100 piches puntos para ti, jejejejjeje @kill_spinal hace 27 días cual es el error que te marca? como estas metiendo los datos? @JoaoM hace 28 días ¿Como recibir avisos de comentarios que entran? Estoy registrado @JoaoM hace 28 días En tu ejemplo tienes 4 form y en el post recomienas 6. Dime algo tambien sobre esto Gracias . Este ultimo es que me es difícil por falta de conocimiento en formación de código. ahora bie @kill_spinal hace 27 días +1 Para eliminar un registro es lo mismo que eliminar una fila completa.entirerow.localizas al cliente de la misma manera en que se localiza para buscar sus datos 2. por aquello del historial. también como pude poner un checkbox que diga contado y otro crédito y cuando se seleccione uno se ponga una "x" en una celda de la hoja imprimir gracias . en cada Form. pero ya veré que puedo conseguir..activas la celda 3. hice uno que detalla como hacer un form sencillo que captura datos en una hoja. Estos forms faltantes los debes crear tu mismo segun tus necesidades a manera de ejercicio con el objetivo de aprender @JoaoM hace 27 días @kill_spinal SI. los clientes deberian eliminarse con un borrado logico y no fisico.delete ( si recuerdo bien ) aunque en realidad.. En este post.@kill_spinal hace 27 días Antes de este post. Como hago para borrar un producto del listbox es decir si ingrese mal un producto en la parte del producto que lo pueda eliminar sin tener que empezar de nuevo.activecell.Quisiera saber si me puedes ayudar . comento que se deben usar varios forms pero especifico que solo voy a ejemplificar algunos. tuvieran un cuadro para Observaciones y Ubicación para el de Alta de Productos. para que al dar de Alta Productos y Clientes.. Por necesidad le agregue algunas columnas también. Los 2 que faltaban.. no conozco nada. Me falta una macro para Botón de Eliminar Clientes y para Productos. lo hice ya. Alta para Clientes y Alta para Productos. ya que. @fimesh hace 15 horas Muy buen aporte soy nuevo en vb jeje es mas. están hechos. asi los demas registros se corren hacia arriba y la lista no queda con filas vacias: 1. los que hacen falta son parecidos al form del post de la captura e incluirlos solo seria desperdicio de tiempo de lectura para los que ya pasaron por el post anterior.
Copyright © 2024 DOKUMEN.SITE Inc.