Validación del contenido de una lista

Para Dante Amor.

Hola Dante buen día:

Nuevamente recurro a su generosidad para solicitar de ser posible me colabores con el sigueitne tema: Tengo un listbox que válido si un item ya existe en la lista, pero me presenta problemas al ingresar códigos que empiecen con el mismo numero, por ej. Si en la lista esta el item 1, al captutar un nuevo item con código 11 o 111, inmediatamente se activa la validación cuando apenas he ingresado el primer dígito del código es decir 1, el código se captura en el combobox1, lo mismo sucede si la captura se hace por la descripción que se ingresa en el combobox4, el siguiente es el código:

Sub ControlItem()
    'Controla q el item no esté en la lista
    For i = 0 To ListBox2.ListCount - 1
        If ListBox2.List(i, 1) = ComboBox1 Then
            MsgBox "Este item ya se encuentra en la lista.", , "ERROR"
            ComboBox1 = "": ComboBox4 = ""
            TextBox8 = "": TextBox9 = "": TextBox12 = ""
            'Cancel = True
            Exit For
        End If
    Next i
End Sub

1 respuesta

Respuesta
1

Te anexo los cambios:

Private Sub ComboBox1_Change()
'Por.Dante Amor
    If cambio Then Exit Sub
    cambio = True
    ComboBox4 = ""
    If ComboBox1 = "" Then
        ComboBox4 = ""
        cambio = False
        Exit Sub
    End If
    f = ComboBox1.ListIndex + 2
    If f > 1 Then
        ComboBox4 = Hoja5.Cells(f, "B")
    End If
    'ControlItem
    cambio = False
End Sub

Private Sub ComboBox4_Change()
'Por.Dante Amor
    If cambio Then Exit Sub
    cambio = True
    ComboBox1 = ""
    If ComboBox4 = "" Then
        ComboBox1 = ""
        cambio = False
        Exit Sub
    End If
    f = ComboBox4.ListIndex + 2
    If f > 1 Then
        ComboBox1 = Hoja5.Cells(f, "A")
    End If
    'ControlItem
    cambio = False
End Sub

Sub ControlItem()
    'Controla q el item no esté en la lista
    For i = 0 To ListBox2.ListCount - 1
        If ListBox2.List(i, 1) = ComboBox1 Then
            MsgBox "Este item ya se encuentra en la lista.", , "ERROR"
            ComboBox1 = "": ComboBox4 = ""
            TextBox2 = "": TextBox10 = ""
            TextBox8 = "": TextBox9 = "": TextBox12 = ""
            'Cancel = True
            Exit For
        End If
    Next i
End Sub

Private Sub CommandButton3_Click()
'agrega elemento a la lista2
'controla que textbox2 sea numérico
If Not IsNumeric(TextBox2) Then
    MsgBox "Introduzca valor numérico en campo CANTIDAD.", , "ERROR"
    TextBox2.SetFocus
    Exit Sub
End If
If Not IsNumeric(TextBox10) Then
    MsgBox "Introduzca valor numérico en campo PRECIO.", , "ERROR"
    TextBox10.SetFocus
    Exit Sub
End If
'Controla que campo cantidad sea > 0
If TextBox2 = 0 Or TextBox2 = "" Then
    MsgBox "Introduzca valor mayor a CERO en campo CANTIDAD.", , "ERROR"
    TextBox2.SetFocus
    Exit Sub
End If
'Controla que campo precio sea > 0
If TextBox10 = 0 Or TextBox10 = "" Then
    MsgBox "Introduzca valor mayor a CERO en campo PRECIO.", , "ERROR"
    TextBox10.SetFocus
    Exit Sub
End If
'
'Controla los duplicados
ControlItem
'
If ComboBox1 <> "" And TextBox2 <> "" Then
    ListBox2.AddItem TextBox2.Value
    ListBox2.List(ListBox2.ListCount - 1, 1) = ComboBox1.Value
    ListBox2.List(ListBox2.ListCount - 1, 2) = ComboBox4
    If TextBox10 <> "" Then ListBox2.List(ListBox2.ListCount - 1, 3) = CDbl(TextBox10)
    ComboBox1.ListIndex = -1
    ComboBox4.ListIndex = -1
    TextBox2 = "": TextBox10 = ""
End If
ComboBox1.SetFocus
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas