filtrar velozmente mientras se escribe en listbox, todas las columnas

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ก.ย. 2024

ความคิดเห็น • 18

  • @proyecto2148
    @proyecto2148 ปีที่แล้ว +2

    Excelente hermano te felicito que lo consiguieras, mucho código pero al fin de cuentas funciona, gracias por tu aporte...

  • @luisstefani4655
    @luisstefani4655 ปีที่แล้ว +1

    Excelente, me costo un poco seguirlo , pero realmente es rapido. Gracias por su aporte.

  • @fabianlopez7579
    @fabianlopez7579 ปีที่แล้ว +2

    Exelente aporte, es muy difícil encontrar videos de problemáticas reales que se realicen directamente en código, por favor sigue subiendo videos similares

  • @gerardoezequielpellicore9818
    @gerardoezequielpellicore9818 ปีที่แล้ว +1

    Excelente hermano, un lujoooooooo

  • @ricardocervantes9158
    @ricardocervantes9158 ปีที่แล้ว

    Excelente, de lo mejor que he visto en programacion VBA Excel.

  • @pichilemuplaya7007
    @pichilemuplaya7007 ปีที่แล้ว +1

    Seguí paso a paso,y funciona PERFECTAMENTE...yo en mi tabla tengo tres columnas....como puedo hacer para que cada columna se muestre en un listbox diferente? Al buscar que me muestre por separado
    L1 CODIGO
    L2 DESCRIPCIÓN
    L3 VALOR...
    gracias...

  • @marcoantonio6
    @marcoantonio6  ปีที่แล้ว +3

    Dim MBRUTA() As Variant
    Dim MREAL() As String
    Dim FILAS As Long
    Private Sub L1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 And L1.ListCount > 0 Then
    Dim D As String
    D = L1.List(L1.ListIndex, 0)
    D = Replace(D, " ", "|")
    D = WorksheetFunction.Trim(Replace(D, vbTab, " "))
    D = Replace(D, " ", ",")
    D = Replace(D, "|", " ")
    MsgBox Split(D, ",")(1)
    End If
    End Sub
    Private Sub T1_Change()
    L1.List = Filter(MREAL, UCase(T1.Text))
    End Sub
    Private Sub T1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 40 And L1.ListCount > 0 Then
    L1.ListIndex = 0
    End If
    End Sub
    Private Sub UserForm_Initialize()
    MBRUTA = Range("TABLA1").ListObject.DataBodyRange
    FILAS = Range("TABLA1").ListObject.DataBodyRange.Rows.Count
    Dim MC%, MN%, MU%, MF%, MCS%, MS%
    Dim CARACTER As Byte
    CARACTER = 7
    L1.Font = "LUCIDA SANS TYPEWRITER"
    MC = Evaluate("MROUND(AGGREGATE(14,4,LEN(Tabla1[CODIGO]),1)+" & CARACTER & "/2," & CARACTER & ")")
    MN = Evaluate("MROUND(AGGREGATE(14,4,LEN(Tabla1[Nombre Producto]),1)+" & CARACTER & "/2," & CARACTER & ")")
    MU = Evaluate("MROUND(AGGREGATE(14,4,LEN(Tabla1[Und]),1)+" & CARACTER & "/2," & CARACTER & ")")
    MF = Evaluate("MROUND(AGGREGATE(14,4,LEN(text(Tabla1[Fecha Salida],""dd/mm/yyyy"")),1)+" & CARACTER & "/2," & CARACTER & ")") ' para fechas
    MCS = Evaluate("MROUND(AGGREGATE(14,4,LEN(Tabla1[Cant. Salida]),1)+" & CARACTER & "/2," & CARACTER & ")")
    MS = Evaluate("MROUND(AGGREGATE(14,4,LEN(Tabla1[Stock Minimo]),1)+" & CARACTER & "/2," & CARACTER & ")")
    ReDim MREAL(1 To FILAS)
    For X = 1 To FILAS
    MREAL(X) = MBRUTA(X, 1) & String((MC - WorksheetFunction.MRound(Len(MBRUTA(X, 1)) + CARACTER / 2, CARACTER)) / CARACTER + 1, vbTab) & _
    MBRUTA(X, 2) & String((MN - WorksheetFunction.MRound(Len(MBRUTA(X, 2)) + CARACTER / 2, CARACTER)) / CARACTER + 1, vbTab) & _
    MBRUTA(X, 3) & String((MU - WorksheetFunction.MRound(Len(MBRUTA(X, 3)) + CARACTER / 2, CARACTER)) / CARACTER + 1, vbTab) & _
    MBRUTA(X, 4) & String((MF - WorksheetFunction.MRound(Len(MBRUTA(X, 4)) + CARACTER / 2, CARACTER)) / CARACTER + 1, vbTab) & _
    MBRUTA(X, 5) & String((MCS - WorksheetFunction.MRound(Len(MBRUTA(X, 5)) + CARACTER / 2, CARACTER)) / CARACTER + 1, vbTab) & _
    MBRUTA(X, 6) & String((MS - WorksheetFunction.MRound(Len(MBRUTA(X, 6)) + CARACTER / 2, CARACTER)) / CARACTER + 1, vbTab)
    Next
    L1.List = MREAL
    T1.SetFocus
    End Sub

  • @eduardosanchezromero2958
    @eduardosanchezromero2958 9 หลายเดือนก่อน

    Genial

  • @pichilemuplaya7007
    @pichilemuplaya7007 ปีที่แล้ว

    Para el cursor, con T1.setfocus
    Permanece un par de veces en el textbox,luego desaparece.

  • @lacs83
    @lacs83 ปีที่แล้ว +1

    Interesante pero demasiado rebuscado y no está generalizado. Sería mejor adaptar ese código a una clase y funcione para cualquier listado de datos.

    • @marcoantonio6
      @marcoantonio6  ปีที่แล้ว +1

      Muy buena acotación mi estimado

  • @Bilfrost
    @Bilfrost ปีที่แล้ว

    Se pueden crear más filtros? Es decir para 3 campos diferentes vaya filtrando a medida que voy seleccionando

  • @Max72MMM
    @Max72MMM 8 หลายเดือนก่อน

    llegue solo a que me muestre la columna 1 en el listbox, cuando hago lo del concatenado me dice "Error de compilación : error de sintaxis"

    • @marcoantonio6
      @marcoantonio6  8 หลายเดือนก่อน

      hola, dejé el código en los comentarios

  • @pichilemuplaya7007
    @pichilemuplaya7007 ปีที่แล้ว

    Hola,estoy iniciando en vb...y me encontré este fantástico código,para un problema que tenía,mi programa Lee 7600 productos,y se demora como 10 segundos en reflejar lo que se busca,hice lo que dice en el tutorial paso a paso,pero en las primeras líneas ,cuando muestra el msgbox para que muestre las columnas,me sale un error en vb,"ERROR 7 en tiempo de ejecución,memoria insuficiente"...no me había pasado con otros formularios,y no se cómo ejecutar éste ahora....

    • @marcoantonio6
      @marcoantonio6  ปีที่แล้ว

      Hola, verifica que el procesador no esté ejecutando otras aplicaciones y que tú memoria ram tenga buena capacidad

  • @pichilemuplaya7007
    @pichilemuplaya7007 ปีที่แล้ว

    Podrías escribir las fórmulas para lo de los caracteres de las columnas ...

    • @marcoantonio6
      @marcoantonio6  ปีที่แล้ว

      Hola Pichilemu,, en B5
      =REDOND.MULT(AGREGAR(14,4,LARGO(Tabla2[Nombre Producto]),1)+7/2,7)
      en G7 y arrastrar hacia abajo
      =REDOND.MULT(LARGO(Tabla2[@[Nombre Producto]])+7/2,7)
      en H7 y arrastrar hacia abajo
      =$B$5-G7
      en I7 y arrastrar
      =H7/7+1