Ir ao conteúdo

Posts recomendados

Postado

Salve amigos!

Mais uma vez recorro ao vasto conhecimento dos integrantes desse forum.

Tenho uma ComboBox no formulário que é populado por um identificador alfanumérico que é uma sequência de outras TextBox.

Como são várias origens, este identificador possui 15 caracteres, porém em sequências diferentes.

Por exempo, RBP1578F2TRN830, GRU18CNF1235745, etc.

O identificador pode começar com letra ou número.

Nexta ComboBox, preciso da função autocompletar por qualquer parte do texto da RowSource, não pelas iniciais, pois

pesquisando uma sequência de letras ou números em qualquer posição eu reduzo muito o universo da pesquisa.

Exempo: Pedro, José e Manoel. Se eu digitar a letra "e" aparecem 3 nomes, mas digitando a letra "s" aparece só José.

Quando era planilha eu conseguia com o código abaixo, mas no formulário já vai além do meu conhecimento.

Desde já agradeço a ajuda de todos.

'---------------------------------------------------------------------------------------
' Module    : UserForm1
' Author    : MVP, Sergio Alejandro Campos
' Date      : 19/02/2016
' Purpose   : Búsqueda "as type"
'---------------------------------------------------------------------------------------

'1)Al iniciar
Private Sub UserForm_Initialize()
    Me.Height = 181
End Sub

'2)Al escribir texto en el TextBox
Private Sub TextBox1_Change()

TextBox1.Text = UCase(TextBox1.Text)

TextBox1.SelStart = Len(TextBox1)

    If Me.TextBox1.Value = "" Or Me.TextBox1.Value = " " Then
        Me.Height = 181

    Else
        Me.Height = 181
        Dim rng As Range, e
        Set Lista = Range("lstProdutos")
        With Me
            .ListBox1.Clear

            For Each i In Lista.Value
                If (i <> "") * (i Like "*" & .TextBox1.Value & "*") Then
                    .ListBox1.AddItem i
                End If
            Next i

        End With
    End If
End Sub

'3)Aceptar el valor elegido y capturarlo en la celda activa
Private Sub CommandButton2_Click()
    Cuenta = Me.ListBox1.ListCount

    For i = 0 To Cuenta - 1

        If Me.ListBox1.Selected(i) = True Then
            ActiveCell.Value = Me.ListBox1.List(i)
        End If

    Next i
    Unload Me

End Sub

'4)Cerrar el formulario
Private Sub CommandButton1_Click()
    Unload Me
End Sub
Private Sub Listbox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  With Me.ListBox1
    For i = 0 To .ListCount - 1
      If .Selected(i) Then
        ActiveCell.Value = .List(i, 0)
        Exit For
      End If
    Next
  End With
    Unload Me
End Sub

-----Modulo--------
Private Sub Listbox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  With Me.ListBox1
    For i = 0 To .ListCount - 1
      If .Selected(i) Then
        Me.TextBox1.Value = .List(i, 0)
        Exit For
      End If
    Next
  End With

End Sub

 

 

Postado

Amigos, resolvi quase a totalidade do problema mas necessito de ajuda para melhorar o código abaixo para aparecer a ListRow de 10 linhas?

Private Sub ComboBox11_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim arrIn As Variant, arrOut As Variant
    Dim i As Long, j As Long

    arrIn = Plan6.Range("log")

    ReDim arrOut(1 To UBound(arrIn), 1 To 1)

    For i = 1 To UBound(arrIn)
        If arrIn(i, 1) Like "*" & ComboBox11.Text & "*" Then
            j = j + 1
            arrOut(j, 1) = arrIn(i, 1)
        End If
    Next
    ComboBox11.List = arrOut
End Sub

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!