Guardar un pedido de una mesa - formulario vba

Hola buenas

Si es que me pueden ayudar quiero que cuando apreté por ejemplo esa mesa (3) se me guarde todo lo ingresado con el botón "GUARDAR" ... Cosa que si voy a otra mesa y después vuelvo a la mesa 3 me salga los datos guardados

2 Respuestas

Respuesta
1

Te paso el código para guardar los datos en la hoja "Pedidos".

No es tan simple el control de pedidos, necesitas un número único de Pedido por cada pedido que realices. Te puse una funcionalidad para crear el pedido único. Pero hay que trabajar más sobre los pedidos. Como crear una cabecera de pedido, con datos generales sobre el pedido, como fecha, quién elaboró el pedido, el total del pedido, etc.

En la hoja de "pedidos" se almacenará el detalle del pedido.

Prueba el siguiente código.

Private Sub BNUMERO_Change()
  Dim n As Long
  If CBOX_CARTA.Value <> "" And TBOX_CANTIDAD.Value <> "" Then
    n = CBOX_CARTA.ListIndex + 4
    PRECIO.Caption = Hoja6.Range("G" & n).Value
  End If
End Sub
'
Private Sub CBOX_CARTA_Change()
  Dim n As Long, nPrecio As Double
  PRECIO.Caption = ""
  If CBOX_CARTA.Value > -1 Then
    n = CBOX_CARTA.ListIndex + 4
    nPrecio = Hoja6.Range("G" & n).Value
    PRECIO.Caption = nPrecio
  End If
End Sub
'
Private Sub CBOX_MESA_Change()
  Dim lr As Long
  LabelPEDIDO.Caption = ""
  If CBOX_MESA.ListIndex > -1 Then
    lr = Sheets("Pedidos").Range("A" & Rows.Count).End(3).Row
    LabelPEDIDO = lr
  End If
End Sub
'
Private Sub CMB_AGREGAR_Click() 'AGREGAR DEL CBOX A LA LBOX
'Botón AGREGAR
  Dim n As Long
  Dim tot As Double, nPrecio As Double
  'verifica si la carta tiene un valor
  If CBOX_CARTA.Value = "" Or CBOX_CARTA.ListIndex = -1 Then
    MsgBox "Selecciona una carta"
    CBOX_CARTA.SetFocus
    Exit Sub
  End If
  '
  If TBOX_CANTIDAD.Value = 0 Or TBOX_CANTIDAD = "" Then
    MsgBox "Captura una cantidad"
    TBOX_CANTIDAD.SetFocus
    Exit Sub
  End If
  '
  n = CBOX_CARTA.ListIndex + 4
  nPrecio = Hoja6.Range("G" & n).Value
  With LBOX_PEDIDO
    .AddItem
    .List(.ListCount - 1, 0) = CBOX_CARTA.Value
    .List(.ListCount - 1, 1) = TBOX_CANTIDAD.Value
    .List(.ListCount - 1, 2) = Format(nPrecio, "#,##0.00")
    .List(.ListCount - 1, 3) = Format(Val(TBOX_CANTIDAD.Value) * nPrecio, "#,##0.00")
    If TBOX_TOTAL = "" Then tot = 0 Else tot = CDbl(TBOX_TOTAL)
    TBOX_TOTAL = Format(tot + .List(.ListCount - 1, 3), "#,##0.00")
  End With
  '
  'PARA QUE BORRE AGREGANDO UN PRODUCTO
  CBOX_CARTA.Value = Empty 'limpia carta
  TBOX_CANTIDAD.Value = Empty 'limpia cantidad
  PRECIO.Caption = ""
End Sub
'
Private Sub CommandButton2_Click()
  Dim i As Long, lr As Long
  Dim sh As Worksheet
  '
  'Validar datos
  If CBOX_MESA.Value = "" Or CBOX_MESA.ListIndex = -1 Then
    MsgBox "Selecciona una MESA"
    CBOX_MESA.SetFocus
    Exit Sub
  End If
  '
  If TBOX_TOTAL.Value = "" Then
    MsgBox "El total "
    CBOX_MESA.SetFocus
    Exit Sub
  End If
  If TBOX_NOMBRE.Value = "" Then
    MsgBox "Falta el nombre"
    TBOX_NOMBRE.SetFocus
    Exit Sub
  End If
  'Continuar con las siguientes validaciones
  '
  '
  'Agregar los datos a la hoja
  Set sh = Sheets("Pedidos")
  lr = sh.Range("A" & Rows.Count).End(3).Row + 1
  For i = 0 To LBOX_PEDIDO.ListCount - 1
    sh.Range("A" & lr).Value = LabelPEDIDO.Caption
    sh.Range("B" & lr).Value = CBOX_MESA.Value
    sh.Range("C" & lr).Value = LBOX_PEDIDO.List(i, 0)
    sh.Range("D" & lr).Value = LBOX_PEDIDO.List(i, 1)
    sh.Range("E" & lr).Value = LBOX_PEDIDO.List(i, 2)
    sh.Range("F" & lr).Value = LBOX_PEDIDO.List(i, 3)
    sh.Range("G" & lr).Value = TBOX_NOMBRE.Value
    sh.Range("H" & lr).Value = TBOX_RUT.Value
    sh.Range("I" & lr).Value = TBOX_FONO.Value
    sh.Range("J" & lr).Value = TBOX_TOTALFINAL.Value
    sh.Range("K" & lr).Value = TBOX_PROPINA.Value
  Next
End Sub
Respuesta

¿Por qué no lo hace en Access que más practico para esta clase de información?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas