Visual Basic - Marcar datos repetidos en un ListView mediante una búsqueda

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 52 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Marcar datos repetidos en un ListView mediante una búsqueda

Publicado por Sergio (1 intervención) el 22/04/2018 18:53:54
Hola, es mi primera vez aquí, encantando de preguntar en este gran foro que muchas veces me ha salvado la vida.

Mi problema es el siguiente.

Ya tengo mi ListView como todo cargado previamente con otro código desde una base de datos, eso ya anda bien, la lista carga bien. Luego tengo el siguiente código, que lo hace es buscar por columunas en el listview basándose en lo que tenga seleccionado en un option buton. Entonces al hacer click en el boton, selecciona lo que haya coincidido en el textbox que se ingresó, y lo buscará en la columuna indicada según el option buton. EL codigo funciona bien, no distingue entre mayusculas y minusculas. Lo único que no encuentra el resultado si no está exactamente escrito como figura en la lista, pero es lo de menos.

Lo que yo quiero hacer, es que cuando vuelvo a hacer click en el comand buton, entre en un ciclo y recorra toda la lista marcándome la siguiente coincidencia. Esto es lo que necesito hacer.

les dejo el código que estoy usando

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
31
32
33
34
35
36
37
38
Private Sub cmdBuscar_Click()
   Dim Opcion As Integer
   Dim dato As String
   Dim Item As ListItem
 
   ' busca por las demás columnas ( por SubItem )
   If Option1.Value = True Then
      dato = txtSearch.Text
      Opcion = lvwSubItem ' busca por los subitems
   End If
 
   Next i
         ' Busca por la primer columna ( por item )
   If Option2.Value = True Then
      dato = txtSearch.Text
      Opcion = lvwText ' busca por el item
   End If
 
    ' si lo ingresado es una cadena vacia sale
    If dato = vbNullString Then
        Exit Sub
    End If
 
   ' Busca con el método FindItem, estableciendo la opcion de búsqueda
   Set Item = ListView1.FindItem(dato, Opcion, , lvwPartial)
 
   ' si el item es nothing no se encontró
   If Item Is Nothing Then
      MsgBox " No se encontró el dato", vbInformation
      Exit Sub
   Else
       ' .. si no , selecciona el elemento encontrado
       Item.EnsureVisible
       Item.Selected = True
       ListView1.SetFocus
   End If
 
End Sub

espero me puedan ayudar con la modificacion que le debo hacer al código, y si me lo pueden dan directamente el código mejor por que los ciclos for, while y do me cuesta mucho entender su funcionamiento aún
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: 1.229
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Marcar datos repetidos en un ListView mediante una búsqueda

Publicado por Antoni Masana (444 intervenciones) el 23/04/2018 10:11:12
En el código que has publicado hay un error. En la línea 12 hay un Next i sin un For.

Para poder ayudarte mejor sería necesario que publiques el libro o lo puedes enviar a mi correo.

Es importante que entiendas el funcionamiento de los Bucles FOR, WHILE , UNTIL, DO , etc.
Te adjunto unas páginas para aprender cómo funciona.

https://exceltotal.com/el-bucle-for-next-en-vba/
http://www.excel-avanzado.com/ejemplos-de-for-en-vba
http://www.excel-avanzado.com/ejemplos-do-while-vba

En esta página hay cursos de Excel bastante interesantes:

http://www.aulaclic.es/index.htm

Saludos.
\\//_
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