Excel - validando un valor antes de añadirlo a un listbox

 
Vista:
Imágen de perfil de Jorge

validando un valor antes de añadirlo a un listbox

Publicado por Jorge (39 intervenciones) el 14/08/2021 15:28:12
Hola buenos días, recurro hacer la siguiente consulta ya que he buscado en videotutoriales, guias y en la web y no encuentro la falla en mi código o no logro reflejar el momento en que me esta dando problemas.
En mi formulario tengo una listbox1, si quiero agregar un nuevo item lo hago desde "cedula", lo que quiero es una condición que si el valor de cedula es igual a algún valor que haya en listbox1 me de el mensaje "No puedes agregar esta cédula ya que se encuentra en la lista", pero si cedula no coincide con ningún valor que este en el listbox1 me añada al listbox lo que haya en cedula.

consulta_2

El código mas cercano al resultado que agregue fue el presente a continuacion:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub mas_cedula_AfterUpdate(): On Error Resume Next
Dim Fila As Long
Dim i As Integer
Dim cargo, nombre As String
 
Fila = Hoja3.Range("A" & Rows.Count).End(xlUp).Row
cargo = WorksheetFunction.VLookup(Val(mas_cedula), Hoja3.Range("A2:H" & Fila), 2, 0) 'busca el cargo de cedula
nombre = WorksheetFunction.VLookup(Val(mas_cedula), Hoja3.Range("A2:H" & Fila), 3, 0) 'busca el nombre de la cedula
 
If siHay = 1 Then 'siHay es una variable publica
    With ListBox1
        For i = 0 To .ListCount
            If UCase(.List(i, 1)) Like UCase(mas_cedula) & "*" Then
                MsgBox "El involucrado que intenta añadir ya se encuentra en la lista", vbCritical, "ATENCION"
                mas_cedula = Empty
                Exit Sub
            Else
                .AddItem
                i = .ListCount - 1
                .List(i, 0) = Val(ID)
                .List(i, 1) = Val(mas_cedula)
                .List(i, 2) = cargo
                .List(i, 3) = nombre
                mas_cedula = Empty
            End If
        Next i
    End With
End If
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

validando un valor antes de añadirlo a un listbox

Publicado por Antoni Masana (2477 intervenciones) el 16/08/2021 14:36:17
En primer lugar no me gusta el Exit Sub donde esta, es decir dentro de un bucle FOR, es mejor finalizar el bucle y salir del procedimiento.

Te reestructuro el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
If siHay = 1 Then 'siHay es una variable publica
    With ListBox1
        For i = 0 To .ListCount
            If UCase(.List(i, 1)) Like UCase(mas_cedula) & "*" Then
                MsgBox "El involucrado que intenta añadir ya se encuentra en la lista", vbCritical, "ATENCION"
                mas_cedula = Empty
                Exit For
            End If
        Next i
 
        If Not mas_cedula = Empty Then
            .AddItem
            i = .ListCount - 1
            .List(i, 0) = Val(ID)
            .List(i, 1) = Val(mas_cedula)
            .List(i, 2) = cargo
            .List(i, 3) = nombre
            mas_cedula = Empty
        End If
    End With
End If

Creo que lo correcto para que no de error es For i = 0 To .ListCount - 1 pero no estoy seguro.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jorge

validando un valor antes de añadirlo a un listbox

Publicado por Jorge (39 intervenciones) el 19/08/2021 06:11:48
Profesor Antoni funciono perfecto, y es verdad hay que añadir .ListCount - 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar