Hola amigos.. soy bastante nuevo en el tema de la programacion pero me gustaria seguir aprendiendo. Tengo un formulario con un listbox en donde voy agregando elementos (Productos) con varias columnas. Necesito que al presionar un boton me compare los nombres de cada elemento en el listbox con el nombre del producto en la tabla y descuente del stock. Adjunto imagenes y dejo parte del codigo...
Private Sub btn_AgregarProducto_Click()
Dim i As Integer
Dim uFilaConDatos As Integer
Dim CantidadColumnas As Integer
Dim CantidadVendida As Integer
Dim Columna1 As Variant
Dim Columna2 As Variant
Dim Columna3 As Variant
Dim Columna4 As Variant
Dim Columna5 As Variant
Dim Columna6 As Variant
Dim TotalVentaUnitaria As Double
If Me.cmb_ListaProductos = "" Then Exit Sub
CantidadVendida = InputBox("Cuantas Unidades de este Producto desea Vender?", "Ingrese la Cantidad")
For i = 2 To uFilaConDatos
If Me.cmb_ListaProductos = Hoja2.Cells(i, 2) Then
Columna1 = Hoja2.Cells(i, 1).Text
Columna2 = Hoja2.Cells(i, 2).Text
Columna3 = CantidadVendida
Columna4 = Hoja2.Cells(i, 5).Text
TotalVentaUnitaria = CantidadVendida * Columna4
Columna5 = Format(Val(TotalVentaUnitaria), "$ #,##0.00")
Exit For
End If
Next
Dim Rango As Range
Dim uFilaVacia As Integer
Dim uFilaConDatos As Integer
Dim Fila As Integer
Dim StockAntesVenta As Integer
Dim StockDespuesVenta As Integer
'Determina Ultima fila sin datos de Hoja Salidas
Set Rango = Sheets("Salidas").Range("A1").CurrentRegion
uFilaConDatos = Rango.Rows.Count
uFilaVacia = uFilaConDatos + 1
Fila = uFilaVacia
'Escribe valores en hoja
For i = 0 To Me.ListBox1.ListCount - 1
With Hoja4
.Cells(uFilaVacia, 1) = ListBox1.List(i, 0)
.Cells(uFilaVacia, 2) = ListBox1.List(i, 1)
.Cells(uFilaVacia, 3) = ListBox1.List(i, 2)
.Cells(uFilaVacia, 4) = ListBox1.List(i, 3)
.Cells(uFilaVacia, 5) = ListBox1.List(i, 4)
.Cells(uFilaVacia, 7) = Me.txt_FechaVenta.Text
.Cells(uFilaVacia, ? = Me.txt_Cuenta.Text
End With
uFilaVacia = uFilaVacia + 1
Next i
Hoja4.Cells(Fila, 6) = Me.txt_Descuento.Text
'Determina Ultima fila sin datos de Hoja Movimientos
Set Rango = Sheets("Movimientos").Range("A1").CurrentRegion
uFilaConDatos = Rango.Rows.Count
uFilaVacia = uFilaConDatos + 1
Fila = uFilaVacia
'Escribe valores en hoja
For i = 0 To Me.ListBox1.ListCount - 1
With Hoja7
.Cells(uFilaVacia, 1) = ListBox1.List(i, 0)
.Cells(uFilaVacia, 2) = ListBox1.List(i, 1)
.Cells(uFilaVacia, 3) = ListBox1.List(i, 2)
.Cells(uFilaVacia, 6) = ListBox1.List(i, 3)
.Cells(uFilaVacia, 7) = ListBox1.List(i, 4)
.Cells(uFilaVacia, 9) = Me.txt_FechaVenta.Text
.Cells(uFilaVacia, 10) = Me.txt_Cuenta.Text
End With
uFilaVacia = uFilaVacia + 1
Next i
Hoja7.Cells(Fila, ? = Me.txt_Descuento.Text
Call ActualizarCaja
If Not Me.txt_Cuenta = "" Then
'Determina Ultima fila sin datos de Hoja Movimientos
Set Rango = Sheets("Cuentas").Range("A1").CurrentRegion
uFilaConDatos = Rango.Rows.Count
uFilaVacia = uFilaConDatos + 1
Fila = uFilaVacia
'Escribe valores en hoja
For i = 0 To Me.ListBox1.ListCount - 1
With Hoja8
.Cells(uFilaVacia, 2) = ListBox1.List(i, 1)
.Cells(uFilaVacia, 3) = ListBox1.List(i, 2)
.Cells(uFilaVacia, 4) = ListBox1.List(i, 4)
.Cells(uFilaVacia, 1) = Me.txt_FechaVenta.Text
.Cells(uFilaVacia, 5) = Me.txt_Cuenta.Text
End With
uFilaVacia = uFilaVacia + 1
Next i
Else
'Nada
End If
Hola amigos.. soy bastante nuevo en el tema de la programacion pero me gustaria seguir aprendiendo. Tengo un formulario con un listbox en donde voy agregando elementos (Productos) con varias columnas. Necesito que al presionar un boton me compare los nombres de cada elemento en el listbox con el nombre del producto en la tabla y descuente del stock. Adjunto imagenes y dejo parte del codigo...
Private Sub btn_AgregarProducto_Click()
Dim i As Integer
Dim uFilaConDatos As Integer
Dim CantidadColumnas As Integer
Dim CantidadVendida As Integer
Dim Columna1 As Variant
Dim Columna2 As Variant
Dim Columna3 As Variant
Dim Columna4 As Variant
Dim Columna5 As Variant
Dim Columna6 As Variant
Dim TotalVentaUnitaria As Double
If Me.cmb_ListaProductos = "" Then Exit Sub
CantidadVendida = InputBox("Cuantas Unidades de este Producto desea Vender?", "Ingrese la Cantidad")
uFilaConDatos = Hoja2.Range("B" & Rows.Count).End(xlUp).Row
For i = 2 To uFilaConDatos
If Me.cmb_ListaProductos = Hoja2.Cells(i, 2) Then
Columna1 = Hoja2.Cells(i, 1).Text
Columna2 = Hoja2.Cells(i, 2).Text
Columna3 = CantidadVendida
Columna4 = Hoja2.Cells(i, 5).Text
TotalVentaUnitaria = CantidadVendida * Columna4
Columna5 = Format(Val(TotalVentaUnitaria), "$ #,##0.00")
Exit For
End If
Next
CantidadColumnas = Range("TablaProductos").Columns.Count
With Me.ListBox1
.ColumnCount = CantidadColumnas
.ColumnWidths = "2 cm;6 cm;2 cm;4 cm;4 cm;0 cm"
.Font.Bold = True
.Font.Size = "16"
.TextAlign = fmTextAlignCenter
End With
ListBox1.AddItem
ListBox1.List(ListBox1.ListCount - 1, 0) = Columna1
ListBox1.List(ListBox1.ListCount - 1, 1) = Columna2
ListBox1.List(ListBox1.ListCount - 1, 2) = Columna3
ListBox1.List(ListBox1.ListCount - 1, 3) = Columna4
ListBox1.List(ListBox1.ListCount - 1, 4) = Columna5
End Sub
y para registrar en las hojas use:
Private Sub btn_RegistrarVenta_Click()
Dim Rango As Range
Dim uFilaVacia As Integer
Dim uFilaConDatos As Integer
Dim Fila As Integer
Dim StockAntesVenta As Integer
Dim StockDespuesVenta As Integer
'Determina Ultima fila sin datos de Hoja Salidas
Set Rango = Sheets("Salidas").Range("A1").CurrentRegion
uFilaConDatos = Rango.Rows.Count
uFilaVacia = uFilaConDatos + 1
Fila = uFilaVacia
'Escribe valores en hoja
For i = 0 To Me.ListBox1.ListCount - 1
With Hoja4
.Cells(uFilaVacia, 1) = ListBox1.List(i, 0)
.Cells(uFilaVacia, 2) = ListBox1.List(i, 1)
.Cells(uFilaVacia, 3) = ListBox1.List(i, 2)
.Cells(uFilaVacia, 4) = ListBox1.List(i, 3)
.Cells(uFilaVacia, 5) = ListBox1.List(i, 4)
.Cells(uFilaVacia, 7) = Me.txt_FechaVenta.Text
.Cells(uFilaVacia, ? = Me.txt_Cuenta.Text
End With
uFilaVacia = uFilaVacia + 1
Next i
Hoja4.Cells(Fila, 6) = Me.txt_Descuento.Text
'Determina Ultima fila sin datos de Hoja Movimientos
Set Rango = Sheets("Movimientos").Range("A1").CurrentRegion
uFilaConDatos = Rango.Rows.Count
uFilaVacia = uFilaConDatos + 1
Fila = uFilaVacia
'Escribe valores en hoja
For i = 0 To Me.ListBox1.ListCount - 1
With Hoja7
.Cells(uFilaVacia, 1) = ListBox1.List(i, 0)
.Cells(uFilaVacia, 2) = ListBox1.List(i, 1)
.Cells(uFilaVacia, 3) = ListBox1.List(i, 2)
.Cells(uFilaVacia, 6) = ListBox1.List(i, 3)
.Cells(uFilaVacia, 7) = ListBox1.List(i, 4)
.Cells(uFilaVacia, 9) = Me.txt_FechaVenta.Text
.Cells(uFilaVacia, 10) = Me.txt_Cuenta.Text
End With
uFilaVacia = uFilaVacia + 1
Next i
Hoja7.Cells(Fila, ? = Me.txt_Descuento.Text
Call ActualizarCaja
If Not Me.txt_Cuenta = "" Then
'Determina Ultima fila sin datos de Hoja Movimientos
Set Rango = Sheets("Cuentas").Range("A1").CurrentRegion
uFilaConDatos = Rango.Rows.Count
uFilaVacia = uFilaConDatos + 1
Fila = uFilaVacia
'Escribe valores en hoja
For i = 0 To Me.ListBox1.ListCount - 1
With Hoja8
.Cells(uFilaVacia, 2) = ListBox1.List(i, 1)
.Cells(uFilaVacia, 3) = ListBox1.List(i, 2)
.Cells(uFilaVacia, 4) = ListBox1.List(i, 4)
.Cells(uFilaVacia, 1) = Me.txt_FechaVenta.Text
.Cells(uFilaVacia, 5) = Me.txt_Cuenta.Text
End With
uFilaVacia = uFilaVacia + 1
Next i
Else
'Nada
End If
Me.txt_FechaVenta = ""
Me.cmb_ListaProductos = ""
Me.ListBox1.Clear
Me.txt_Descuento = ""
Me.txt_Cuenta = ""
Me.lbl_SubTotal = ""
Me.lbl_Total = ""