Tiago Grego Miguel 0 Posted December 28, 2018 Report Share Posted December 28, 2018 Boa noite, desde já aviso que percebo muito pouco de visual basic e ando a tentar executar umas macro no excel para facilitar o trabalho. Neste momento tenho uma base de preços numa sheet do excel e criei um formulário com um listbox e duas caixas de texto para realizar procura automática. O problema que tenho, é que a procura apenas de cinge à primeira palavra do campo onde procura, nunca vai procurar a combinação de caracteres ás restantes palavras. Não sei se me fiz entender, mas vou deixar aqui o código para ver se alguém me consegue ajudar. Obrigado desde já. Sub FILTRO() On Error GoTo Erro Dim linha, linhalist As Integer Dim valor_celula As String linhalist = 0 linha = 2 bdcdo.Clear 'ORCABDCDO.Select - Vinha com o código original, mas fazia saltar de folha. With ORCABDCDO While .Cells(linha, 1).Value <> "" valor_celula = .Cells(linha, 1).Value If UCase(Left(valor_celula, Len(codigo.Text))) = UCase(codigo.Text) Then valor_celula = .Cells(linha, 2).Value If UCase(Left(valor_celula, Len(design.Text))) = UCase(design.Text) Then Me.bdcdo.ColumnWidths = "60;200;40;60" With bdcdo .AddItem .List(linhalist, 0) = ORCABDCDO.Cells(linha, 1) .List(linhalist, 1) = ORCABDCDO.Cells(linha, 2) .List(linhalist, 2) = ORCABDCDO.Cells(linha, 3) .List(linhalist, 3) = Format(ORCABDCDO.Cells(linha, 4), "currency") End With linhalist = linhalist + 1 End If End If linha = linha + 1 Wend End With Exit Sub Erro: MsgBox "Erro!", vbCritical, "filtro" End Sub Private Sub codigo_Change() Call FILTRO End Sub Private Sub design_Change() Call FILTRO End Sub Private Sub UserForm_Click() End Sub Link to post Share on other sites
Gnrtuga 21 Posted January 8, 2019 Report Share Posted January 8, 2019 Boas, em primeiro lugar devias ter inserido o código usando o ícone <> que é para facilitar a leitura de quem te quer ajudar Segundo não percebi bem o que queres, ajudava se colocasses um exemplo (mesmo que não seja real) e qual o resultado esperado. Por fim acho que percebi o porquê de não te estar a dar o resultado esperado, nesta parte do código: valor_celula = .Cells(linha, 1).Value If UCase(Left(valor_celula, Len(codigo.Text))) = UCase(codigo.Text) Then valor_celula = .Cells(linha, 2).Value If UCase(Left(valor_celula, Len(design.Text))) = UCase(design.Text) Then Se o primeiro if é verdadeiro ele já não vai verificar o segundo, por isso talvez queiras usar um elseif em lugar do 2º if. Boa sorte Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now