Textbox sin dato genera error en Listbox

Tengo la siguiente rutina:

 Public Sub AgregarItems()

         If frm_Dos.ComboBox3.Text = "" Then MsgBox ("Elija un código de producto"): Exit Sub

        If Trim(frm_Dos.txt_Cantidad.Text) = "" Then MsgBox ("Debe ingresar la cantidad"): Exit Sub

              With frm_Uno

            .ListBox1.AddItem Val(frm_Dos.txt_Cantidad.Text)

            .ListBox1.List(i, 2) = frm_Dos.ComboBox3.Text 'Nombre del producto

            .ListBox1.List(i, 1) = frm_Dos.txt_Codigo.Text 'Codigo del producto

            .ListBox1.List(i, 3) = frm_Dos.txt_PrecioV.Text 'Precio Venta

            .ListBox1.List(i, 4) = frm_Dos.txt_Descuento.Text 'Descuento

            .ListBox1.List(i, 5) = frm_Dos.txt_Importe.Text 'Importe

             i = i + 1

        End With

        sumarDescuento2

        sumarImporte

            With frm_Dos

            .ComboBox3.ListIndex = -1

            .txt_Codigo = ""

            .txt_Cantidad = ""

            .txt_PrecioV = ""

            .txt_Importe = ""

        End With

 End Sub

Como pueden ver los datos se cargan en el listbox por medio de un formulario, el frm_Dos, el inconveniente es con el textbox Descuento, cuando se ingresa un valor en el textbox Descuento, los datos cargan en el listbox sin problema, me realiza las sumas y restas correspondientes, pero si no se utiliza el textbox Descuentos me genera error (13, no coinciden los tipos) y me envía al formulario frm_Dos, donde tengo esta rutina, que es la que da la orden al formulario Uno de ingresar los datos:

Private Sub btn_Agregar_Click() 

    With frm_Uno

        .AgregarItems

        .ctrls_FormatoMoneda

    End With

 MsgBox "Producto agregado con éxito!!!", vbInformation, "titulo"

 End Sub

Mi consulta es si se puede ordenar al listbox que si el textbox Descuento no tiene dato, cargue $ 0,0 o algo que no me genere el error.

2 Respuestas

Respuesta
1

El error es porque estás haciendo una operación y cargaste un vacío en el listbox.

Lo que te sugiero es, si el txt_Descuento es un vacío, entonces cargues un valor 0 en el listox. Por ejemplo:

Public Sub AgregarItems()
    If frm_Dos.ComboBox3.Text = "" Then MsgBox ("Elija un código de producto"): Exit Sub
    If Trim(frm_Dos.txt_Cantidad.Text) = "" Then MsgBox ("Debe ingresar la cantidad"): Exit Sub
    With frm_Uno
        .ListBox1.AddItem Val(frm_Dos.txt_Cantidad.Text)
        .ListBox1.List(i, 2) = frm_Dos.ComboBox3.Text 'Nombre del producto
        .ListBox1.List(i, 1) = frm_Dos.txt_Codigo.Text 'Codigo del producto
        .ListBox1.List(i, 3) = frm_Dos.txt_PrecioV.Text 'Precio Venta
        If frm_Dos.txt_Descuento.Text = "" Then
            var_Descuento = 0
        Else
            var_Descuento = frm_Dos.txt_Descuento.Text
        End If
        .ListBox1.List(i, 4) = var_Descuento 'Descuento
        .ListBox1.List(i, 5) = frm_Dos.txt_Importe.Text 'Importe
         i = i + 1
    End With
    sumarDescuento2
    sumarImporte
    With frm_Dos
        .ComboBox3.ListIndex = -1
        .txt_Codigo = ""
        .txt_Cantidad = ""
        .txt_PrecioV = ""
        .txt_Importe = ""
    End With
End Sub

Antes de cargar en el listbox, verifico el valor de txt_Descuento, si es vacío, entonces la variable var_descuento igual a 0; de lo contrario, entonces la variable var_descuento igual txt_Descuento; después cargo en el listbox el contenido de la variable var_descuento.

Si tienes problema con algún otro textbox, te sugiero que realices la mismo proceso.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Respuesta

H o l a 

Observo que después de cargar los datos al listbox realizas cálculos, entonces es obligatorio un valor en el txt_descuento

Cuando abras tu form que cargue el valor cero en el textbox descuento

Private Sub frm_Dos_Activate()
txt_Descuento = Format(Val(txt_Descuento), "0.00")
End Sub

me comentas 

En el evento Activate del frm_Dos agregas la rutina

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas