Modificación de un formulario existente en Excel

Primero que nada les digo que estoy iniciándome en Excel debido a que buscando una forma de llevar un control de la ventas de mi negocio, encontré un punto de venta básico en Excel y me parece de verdad muy útil. Su funcionamiento es algo simple: en la primera hoja del libro de excel aparece un botón que abre un formulario, en la segunda hoja se encuentra una "base de datos" de los productos que se venden la cual contiene 3 columnas que indican "codigo","descripcion" y "precio unitario"; en la tercer hoja se encuentra otra tabla que lleva el registro de las ventas según los datos que se ingresen en el formulario.

El formulario funciona así: El campo fecha no es editable y muestra la fecha actual. Después tiene el campo "consecutivo" que tampoco es editable ya que funciona como un folio de las ventas realizadas. Después aparece el campo "Codigo" en el que se escribe el código del producto y entonces el formulario abre una ventana que muestra la descripción del producto y su precio unitario además de solicitar la cantidad de productos que se vendieron, para añadir una vez que todos los datos estén completos el registro a la tabla de la hoja "ventas" del libro en excel.

Quisiera que por favor me ayuden a hacer que el formulario me permita escribir en el campo "codigo" un código con letras y a partir de ahí realice lo mismo que hace de por si, ya que me es más fácil recordar una palabra para cada producto que un código en números. Intente poniendo directamente una palabra en el campo "codigo" de la tabla productos pero al intentar buscar con el formulario, me sale "Ha ocurrido un error, no coinciden los tipos".

Este es el código VBA del formulario espero que puedan ayudarme.

'---------------------------------------------------------------------------------------
' Module    : frmVenta
' Author    : MVP Excel
' Date      : 21/11/2014
' Purpose   : Formulario tipo punto de venta para capturar productos.
'---------------------------------------------------------------------------------------
'
Option Explicit
'
Private Sub CommandButton1_Click()
'Declaramos variables
Dim strDescripcion As String
Dim intCantidad As Double
Dim doublePUnitario As Double
Dim intTotal As Double
'
'En caso de error
On Error GoTo ErrorHandler
'
With Application.WorksheetFunction
    '
    'Usamos BUSCARV para encontrar el detalle del producto
    strDescripcion = .VLookup(CInt(Me.TextBox1.Value), PRODUCTOS.Range("A:C"), 2, 0)
    '
    intCantidad = InputBox(strDescripcion & vbNewLine & vbNewLine & "Ingresa la cantidad.", "Cantidad", 1)
    '
    If intCantidad = 0 Then GoTo ErrorHandler
    '
    'Llenamos el ListBox
    '... CÓDIGO
    Me.ListBox1.AddItem Me.TextBox1.Value
    '
    '... DESCRIPCIÓN
    ListBox1.List(ListBox1.ListCount - 1, 1) = strDescripcion
    '
    '... CANTIDAD
    ListBox1.List(ListBox1.ListCount - 1, 2) = .Text(intCantidad, "#,##0")
    '
    '... P.unitario
    doublePUnitario = .VLookup(CInt(Me.TextBox1.Value), PRODUCTOS.Range("A:C"), 3, 0)
    ListBox1.List(ListBox1.ListCount - 1, 3) = .Text(doublePUnitario, "$#,##0.00;-$#,##0.00")
    '
    '... TOTAL
    intTotal = doublePUnitario * intCantidad
    ListBox1.List(ListBox1.ListCount - 1, 4) = .Text(intTotal, "$#,##0.00;-$#,##0.00")
    '
    '...ETIQUETAS
    Me.lblProductos = .Text(CInt(Me.lblProductos) + CInt(intCantidad), "#,##0")
    Me.lblTotal = .Text(CDbl(Me.lblTotal) + CDbl(intTotal), "$#,##0.00;-$#,##0.00")
    '
    Me.TextBox1.Value = ""
    Me.TextBox1.SetFocus
    '
End With
'
Exit Sub
'
ErrorHandler:
'
MsgBox "Ha ocurrido un error: " & Err.Description, vbExclamation, "EXCELeINFO"
'
Me.TextBox1.Value = ""
Me.TextBox1.SetFocus
'
End Sub
'
Private Sub CommandButton4_Click()
Unload Me
End Sub
'
Private Sub CommandButton5_Click()
Dim i As Variant
Dim j As Variant
Dim TransRowRng As Range
Dim NewRow As Integer
'
With VENTAS
    '
    For i = Me.ListBox1.ListCount To 1 Step -1
        '
        Set TransRowRng = ThisWorkbook.Worksheets("VENTAS").Cells(1, 1).CurrentRegion
        NewRow = TransRowRng.Rows.Count + 1
        .Cells(NewRow, 1).Value = Date
        .Cells(NewRow, 2).Value = Me.txtConsec.Value
        '
        For j = 0 To 4
            '
            .Cells(NewRow, j + 3).Value = Me.ListBox1.List(Me.ListBox1.ListCount - i, j)
            '
        Next j
        '
    Next i
    '
End With
'
MsgBox "Registros guardados con éxito.", vbInformation, "EXCELeINFO"
'
Unload Me
'
End Sub
Private Sub TextBox1_Change()
End Sub
'
Private Sub UserForm_Initialize()
Dim intConsecutivo As String
'
Me.ListBox1.ColumnCount = 5
Me.ListBox1.ColumnWidths = "70 pt; 150 pt; 55 pt; 60 pt; 60 pt"
Me.txtFecha.Value = Date
'
intConsecutivo = VENTAS.Range("I1").Value
'
If intConsecutivo = "CONSECUTIVO" Then
    '
    Me.txtConsec = 1
    '
Else
    '
    Me.txtConsec = intConsecutivo + 1
    '
End If
End Sub
----------------------------------

1 Respuesta

Respuesta
1

El código se ingresa en el textbox1, donde dice 'usamos BUSCARV quita la función CInt..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas