Visual Basic para Aplicaciones - Ayuda con ListBox Excel-VBA

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Ayuda con ListBox Excel-VBA

Publicado por Marcos (6 intervenciones) el 06/02/2016 14:26:59
Buenas amigos tengo un problema o varios con un listBox. Se trata un listBox que esta enlazado con una tabla en una hoja de excel. El listbox me muestra todos los datos cargados en la tabla, hasta ahi todo bien. El problema surge cundo quiero que me filtre un dato que busco a travez de un textbox que tengo en el mismo userform que tengo el listbox. La busqueda se hace a travez de un boton e ingresando un determinado dato que filtre en el listbox y muestre en él toda la fila asociada a ese dato. Otro problema que tengo es como puedo imprimir los datos que yo seleccione en el listbox. Se que VBA no lo hace directamente sino que a travez de enviar esos datos a una hoja y ahi imprimirlos y no se como es el código para poder hacerlo. desde ya muchas gracias
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

Ayuda con ListBox Excel-VBA

Publicado por jere (4 intervenciones) el 06/02/2016 15:04:39
podrías publicar el libro en algún lugar?
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
sin imagen de perfil

Ayuda con ListBox Excel-VBA

Publicado por Marcos (6 intervenciones) el 09/02/2016 21:00:05
Vieja aca te dejo la hoja de calculo con el userfom. Vas a encontrar el listbox cargado con los datos de la hoja y el boton y el textbox para la busqueda, y ademas el boton para imprimir. Realmente no se el codigo para hacer el filtrado e imprimir seleccionando los datos. Disculpa la demora y desde ya muchas gracias
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

Ayuda con ListBox Excel-VBA

Publicado por jere (6 intervenciones) el 09/02/2016 22:58:29
te devuelvo el archivo con algunos cambios y falta lo de impresión... (estoy cansado! jeje)
obviamente se puede hacer de varias maneras el tema búsqueda, lo hice como 1ro se me ocurrió

https://www.sendspace.com/file/2h75yt
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
sin imagen de perfil

Ayuda con ListBox Excel-VBA

Publicado por marcos (6 intervenciones) el 10/02/2016 19:51:44
Loco muchas gracias por la yuda. Ahora lo reviso y te cuento. Yo estoy aprendiendo de autodidacta pero siente q a veces hace faltas alguien q te apuntale o te enseñe la estructura jeje. 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
sin imagen de perfil

Ayuda con ListBox Excel-VBA

Publicado por marcos (6 intervenciones) el 10/02/2016 20:06:15
Loco esta excelente queda re bien. Estoy leyendo el código para aprenderlo ja ja. Sabes cómo hacer que vuelva a estar como al inicio el listbox osea que cargue la tabla sin filtrar? Gracias loco, 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

Ayuda con ListBox Excel-VBA

Publicado por jere (13 intervenciones) el 10/02/2016 23:04:22
también soy autodidacta, para volver a cargar todo fijate como lo hace al iniciar el userform
fijate en la ayuda sobre el operador Like y el uso de los comodines * y ?
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
sin imagen de perfil

Ayuda con ListBox Excel-VBA

Publicado por marcos (6 intervenciones) el 11/02/2016 14:35:35
Hola tengo un problema con la funcion load. en el codigo de la funcion hay una rutina que limipia el listbox, figura como lb.clear y a continuacion da inicio a la rutina para llenar el listbox a traves de un ciclo For. La cosa es que reemplazo los nombre de los controles correspondientes y hago el llenado del llistBox pero al ejecutar la busqueda me da error '-2147467259 (80004005)' y en la linea que señala el error es en listBox1.clear (linea que reemplace el ombre del control)...es una lucha
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

Ayuda con ListBox Excel-VBA

Publicado por jere (13 intervenciones) el 11/02/2016 15:31:09
sin ver lo que hiciste es imposible corregirlo, te sugiero que depures el código paso a paso
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
sin imagen de perfil

Ayuda con ListBox Excel-VBA

Publicado por marcos (6 intervenciones) el 11/02/2016 16:15:46
Loco acá te paso el código que hiciste:

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
39
40
41
42
43
44
45
Option Explicit
 
Private Sub UserForm_Initialize()
Call load("*")
End Sub
 
Private Sub btnBuscar_Click()
Dim s$
s = VBA.Trim(txtBuscar.Text)
If s = "" Then Exit Sub
Call load("*" & VBA.UCase(s) & "*")
End Sub
 
Private Sub load(ByVal sPattern As String)
Dim v As Variant, col As New Collection
Dim i&, j&, t$
v = Hoja1.Range("tabla1")
 
For i = 1 To UBound(v, 1)
    t = ""
    For j = 1 To UBound(v, 2)
        If j = 2 And VBA.Trim(v(i, j)) = "" Then GoTo continue
        t = t & v(i, j) & "|"
    Next
    If VBA.UCase(t) Like sPattern Then
       col.Add t
    End If
Next
 
continue:
lb.Clear
 
For i = 1 To col.Count
    t = col.Item(i)
    With lb
        .AddItem
        .List(i - 1, 0) = VBA.Split(t, "|")(0)
        .List(i - 1, 1) = VBA.Split(t, "|")(1)
        .List(i - 1, 2) = VBA.Split(t, "|")(2)
        .List(i - 1, 3) = VBA.Split(t, "|")(3)
        .List(i - 1, 4) = VBA.Split(t, "|")(4)
        .List(i - 1, 5) = VBA.Split(t, "|")(5)
    End With
Next
End Sub

Y acá va como lo puse yo:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Option Explicit
 
Private Sub UserForm_Initialize()
On Error Resume Next
Call cargar("*")
End Sub
 
Private Sub btnBuscaron_Click()
Dim s$
s = VBA.Trim(txtBuscar.Text)
If s = "" Then Exit Sub
Call cargar("*" & VBA.UCase(s) & "*")
End Sub
 
Private Sub cargar(ByVal sPattern As String)
Dim v As Variant, col As New Collection
Dim i&, j&, t$
v = Hoja1.Range("BDMAQUINAS")
 
For i = 1 To UBound(v, 1)
    t = ""
    For j = 1 To UBound(v, 2)
        If j = 2 And VBA.Trim(v(i, j)) = "" Then GoTo continue
        t = t & v(i, j) & "|"
    Next
    If VBA.UCase(t) Like sPattern Then
       col.Add t
    End If
Next
 
continue:
ListBox1.Clear
 
For i = 1 To col.Count
    t = col.Item(i)
    With ListBox1
        .AddItem
        .List(i - 1, 0) = VBA.Split(t, "|")(0)
        .List(i - 1, 1) = VBA.Split(t, "|")(1)
        .List(i - 1, 2) = VBA.Split(t, "|")(2)
        .List(i - 1, 3) = VBA.Split(t, "|")(3)
        .List(i - 1, 4) = VBA.Split(t, "|")(4)
        .List(i - 1, 5) = VBA.Split(t, "|")(5)
        .List(i - 1, 6) = VBA.Split(t, "|")(6)
        .List(i - 1, 7) = VBA.Split(t, "|")(7)
        .List(i - 1, 8) = VBA.Split(t, "|")(8)
        .List(i - 1, 9) = VBA.Split(t, "|")(9)
        .List(i - 1, 10) = VBA.Split(t, "|")(10)
        .List(i - 1, 11) = VBA.Split(t, "|")(11)
        .List(i - 1, 12) = VBA.Split(t, "|")(12)
    End With
Next
End Sub

Le busque la vuelta por todos lados y nada
Da ese error
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

Ayuda con ListBox Excel-VBA

Publicado por Anonimo (1 intervención) el 17/02/2016 06:17:14
buenas noches amigos...necesito de su gran ayuda para agregar datos a un chkbx o DropDown. necesito que se muestre como sabado y domingo para ser elegidas como opcion.

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
Sub Addcheckboxes()
Dim cell, LRow As Single
Dim chkbx As DropDown
Dim MyLeft, MyTop, MyHeight, MyWidth As Double
 
Application.ScreenUpdating = False
LRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
 
For cell = 2 To LRow
    If Cells(cell, "A").Value <> "" Then
        MyLeft = Cells(cell, "E").Left
        MyTop = Cells(cell, "E").Top
        MyHeight = Cells(cell, "E").Height
        MyWidth = Cells(cell, "E").Width
        ActiveSheet.DropDowns.Add(MyLeft, MyTop, MyWidth, MyHeight).Select
 
    End If
Next cell
 
Application.ScreenUpdating = True
 
End Sub
 
Sub RemoveCheckboxes()
'Dim chkbx As dropdowns
 
ActiveSheet.DropDowns.Delete
 
'For Each chkbx In ActiveSheet.CheckBoxes
'    chkbx.Delete
'Next
 
End Sub
 
Sub CopyRows()
 
For Each chkbx In ActiveSheet.DropDowns
    If chkbx.Value = 1 Then
        For r = 1 To Rows.Count
            If Cells(r, 1).Top = chkbx.Top Then
                With Worksheets("STSabado")
                    LRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    .Range("A" & LRow & ":D" & LRow) = _
                    Worksheets("Seleccion").Range("A" & r & ":D" & r).Value
                End With
                Exit For
            End If
        Next r
    End If
Next
 
End Sub
 
Sub AddcheckboxesD()
Dim cell, LRow As Single
Dim chkbx As DropDown
Dim MyLeft, MyTop, MyHeight, MyWidth As Double
 
Application.ScreenUpdating = False
LRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
 
For cell = 2 To LRow
    If Cells(cell, "A").Value <> "" Then
        MyLeft = Cells(cell, "E").Left
        MyTop = Cells(cell, "E").Top
        MyHeight = Cells(cell, "E").Height
        MyWidth = Cells(cell, "E").Width
        ActiveSheet.DropDowns.Add(MyLeft, MyTop, MyWidth, MyHeight).Select
        With Selection
            .Caption = ""
            Worksheets("Hoja1").Range("A1").Value = 500
            .Display3DShading = False
        End With
    End If
Next cell
 
Application.ScreenUpdating = True
 
End Sub
 
Sub RemoveCheckboxesD()
'Dim chkbx As dropdown
 
ActiveSheet.DropDowns.Delete
 
'For Each chkbx In ActiveSheet.dropdowns
'    chkbx.Delete
'Next
 
End Sub
 
Sub CopyRowsD()
 
For Each chkbx In ActiveSheet.DropDowns
    If chkbx.Value = 1 Then
        For r = 1 To Rows.Count
            If Cells(r, 4).Top = chkbx.Top Then
                With Worksheets("STDomingo")
                    LRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    .Range("A" & LRow & ":F") = _
                    Worksheets("Seleccion").Range("A" & r & ":D" & r).Value
                End With
                Exit For
            End If
        Next r
    End If
Next
 
End Sub
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