Página 1 de 1

Precisando alterar essa macro

Enviado: 27 Jun 2016 às 22:53
por Angra
Boa noite
Peguei essa macro em outro fórum, achei interessante e preciso alterar a entrada de dados e modo como ela retorna os resultados, se alguém quiser contribuir... agradeço. :D

Re: Precisando alterar essa macro

Enviado: 01 Jul 2016 às 10:48
por Angra
Pessoal, aceito de bom grado se alguém quiser fazer outra macro com os parâmetros dados. :D

Re: Precisando alterar essa macro

Enviado: 08 Jul 2016 às 10:03
por alexandrevba
Bom dia!!

Porque não usar um filtro?
Código: Selecionar todos
Sub AleVBA_2427()
    Dim rngA As Range
    Dim cell As Range
     
    Set rngA = Range("NX6:OQ6")
    For Each cell In rngA
        If cell.Value = [OT4].Value Then
            cell.Select
            Selection.AutoFilter Field:=ActiveCell, Criteria1:=Range("OV4").Value
        End If
    Next cell
End Sub
Att

Re: Precisando alterar essa macro

Enviado: 08 Jul 2016 às 11:36
por Angra
Bom dia
Meu caro alexandrevba, esse filtro até serviria mas preciso mostrar na célula OX4, apenas o ultimo valor encontrado e o filtro
puxa todos os valores ao mesmo tempo. Outra coisa, é que essa macro vai atuar numa plan que vai ficar oculta e o resultado e os dados de entrada numa plan "visível". Se vc puder fazer mais esse favor minha gratidão. :D

Re: Precisando alterar essa macro

Enviado: 08 Jul 2016 às 12:28
por alexandrevba
Boa tarde!!

Me diga uma coisa, qual dos resultados (caso tenha mais de uma linha), resultados deve ser retornado?

Att

Re: Precisando alterar essa macro

Enviado: 08 Jul 2016 às 12:57
por Angra
no exemplo dado, o valor procurado é o 3 (OV4). O valor máximo que pode aparecer em OV4 é 20. A pesquisa visa somente saber qual foi o ultima valor que apareceu naquela linha/coluna informada em OT4/OV4 respectivamente. O resultado na célula OX4 é necessario porque a plan de pesquisa fica oculta. Se for usado o recurso do filtro, então é preciso "desfazer" o filtro para uma próxima consulta.

Re: Precisando alterar essa macro

Enviado: 12 Jul 2016 às 14:41
por alexandrevba
Boa tarde!!

Tente assim...


Att

Re: Precisando alterar essa macro

Enviado: 13 Jul 2016 às 09:13
por Angra
alexandrevba é isso mesmo, só pra finalizar com 100% de satisfação. A plan origem fica oculta, depois que a macro faz a pesquisa e mostra o resultado, o filtro fica fica "ativo", tem como desativar o filtro para uma nova pesquisa. Depois de

LastRow = .Cells(Rows.Count, "NV").End(xlUp).Row
.Range("NV7:NV" & LastRow).Copy Destination:=wsR.Range("K1")

fiz no gravador de macro

Sheets("Origem").Select
Selection.AutoFilter
Sheets("Resultado").Select

mas não deu certo não. Se puder colocar no finalzinho da macro essa condição, ficava bom. :D

Re: Precisando alterar essa macro

Enviado: 13 Jul 2016 às 09:59
por alexandrevba
Bom dia!!
Por favor click no Obrigado e marque seu post como resolvido!
Tente o código abaixo.
Código: Selecionar todos
Sub AleVBA_2427()
Dim i As Integer, rngData As Range
Dim wsF As Worksheet:    Set wsF = Sheets("Origem")
Dim wsR As Worksheet:    Set wsR = Sheets("Resultado")

Set rngData = wsF.Range("NX6").CurrentRegion '<- Fixa uma região para atuação do filtro
    wsR.Columns("K").ClearContents           '<- Limpa os dados da coluna K
'-> Localiza o cabeçalho baseado em critério em outra guia
    i = Application.WorksheetFunction.Match(wsR.Range("B3").Value, wsF.Range("NX6:OQ6"), 0)
'-> Filtra os dados
    rngData.AutoFilter Field:=i, Criteria1:=wsR.Range("D3").Value
'-> Copia os dados filtrados para outra guia
    With wsF
        LastRow = .Cells(Rows.Count, "NV").End(xlUp).Row
        .Range("NV7:NV" & LastRow).Copy Destination:=wsR.Range("K1")
        .ShowAllData 'Remove o filtro
    End With
'-> Remove a cor do preenchimento da coluna
    With Columns("K:K").Interior
        .ColorIndex = xlNone
    End With
End Sub
Att

Re: Precisando alterar essa macro

Enviado: 13 Jul 2016 às 14:02
por Angra
Seu alexandrevba, muito obrigado pela ajuda. :D :D