Ir ao conteúdo
  • Cadastre-se

Excel Selecionar intervalo em lista variável no VBA


Posts recomendados

Olá gente, queria uma ajuda urgente, não tenho muita experiência no VBA e estou querendo desenvolver um botão que realize auto-classificação de uma parte de uma lista, que cresce, pela cor presentes na coluna K.

 

O codigo:

 


Sub PrioriMAX()
'
' Prio Macro
'

'
  
    Range("C6").Activate
    ActiveCell.Offset(rowOffset:=10, columnOffset:=12).Activate
    

    ActiveWorkbook.Worksheets("Tableau").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Tableau").Sort.SortFields.Add(Range("K7:K10"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, _
        199, 206)
    ActiveWorkbook.Worksheets("Tableau").Sort.SortFields.Add(Range("K7:K10"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, _
        235, 156)
    ActiveWorkbook.Worksheets("Tableau").Sort.SortFields.Add(Range("K7:K10"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(249, _
        249, 249)
  With ActiveWorkbook.Worksheets("Tableau").Sort
        .SetRange Range("C6")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
 

 

Obrigado pela ajuda desde já 

Link para o comentário
Compartilhar em outros sites

Bom dia, Igor Pinheiro de Medeiros

 

Uma dica muito importante é você anexar uma planilha de exemplo com dados (fictícios) e que não seja o
projeto inteiro (com o trecho que está com dificuldades); explicando com as informações necessárias
para alcançar o seu objetivo (se necessário incluir imagens elucidativas), desta forma podemos ajudá-lo
com maior rapidez e eficácia (a maioria nem olharia este Tópico sem um arquivo exemplo, pois
existe muitas "variáveis" que podem impossibilitar o sucesso parcial ou total da solução proposta,
se não tiver um arquivo exemplo que for disponibilizado) ;) .

 

Aguardando sua resposta (com o seu arquivo exemplo) e seu Feed Back ... se foi útil, não esqueça de

clicar na "mãozinha" :D

 

LaerteB :D

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Boa tarde, Igor Pinheiro de Medeiros

 

Desculpe a demora, mas estava muito atarefado 😥... então no anexo

"Exemplo solucao_final.zip"  alterei algumas coisas no seu código, agora

ele está fazendo o que pediu 👍..

 

Verifique se está de acordo com a sua questão 😉...

 

Qualquer coisa estamos aqui...

 

Aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha" :D

 

LaerteB :D

Exemplo solucao_final.zip

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Boa noite, Igor Pinheiro de Medeiros

 

No arquivo exemplo que anexei, tu podes substituir aquele código por este abaixo,

tem pequenas alterações e tira o Select, e executa da mesma forma... estou

passando essa alteração, pois foi o Osvaldo (o Mestre osvaldomp) que me passou

essa sugestão (é muito bem vinda por sinal) valeu Osvaldo 👍😀:

 

 With ActiveSheet.Sort
  .SortFields.Clear
  .SortFields.Add(Range("K6"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 0, 0)
  .SortFields.Add(Range("K6"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 192, 0)
  .SortFields.Add(Range("K6"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(242, 242, 242)
    
  .SetRange Range("D6").CurrentRegion
  .Header = xlGuess
  .MatchCase = False
  .Orientation = xlTopToBottom
  .SortMethod = xlPinYin
  .Apply
 End With

Qualquer coisa estamos aqui...

 

Aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha" 👍

 

LaerteB 🙂

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@LaerteB Obrigado pela ajuda amigo! Então até então funcionou para realizar a classificação com os dados ja colocados, mas se eu adiciono nova linha no intervalo e coloco uma nova classificação, ele da erro. Como está ai no anexo.

Exemplo solucao_final.rar

Link para o comentário
Compartilhar em outros sites

Bom dia, Igor Pinheiro de Medeiros

 

Ok, obrigado você 👍...

 

Quando tu adicionar nova linha no intervalo, não poderá ficar vazio nenhuma célula

da coluna "D" , senão ocorre este erro 😉...

 

Ou pode substituir por este trecho do código abaixo, se precisar de alguma célula da

coluna "D" ficar vazia :

  .SetRange Range("K6").CurrentRegion

 

Outra coisa pode tirar este trecho abaixo, do código (que não afetará em nada na

execução deste comando), como citado em mensagem acima :

Verifique e qualquer dúvida estamos aqui.. 😀

Range("K6").Select
Selection.End(xlDown).Select

Range(Cells(6, 4), Cells(ActiveCell.Row, ActiveCell.Column)).Select

 

Aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha"👍

 

LaerteB🙂

Link para o comentário
Compartilhar em outros sites

 

34 minutos atrás, Igor Pinheirode Medeiros disse:

Então até então funcionou para realizar a classificação com os dados ja colocados, mas se eu adiciono nova linha no intervalo e coloco uma nova classificação, ele da erro.

 

1. limpe o conteúdo das células mescladas D19:M21 (é recomendável também desfazer a mesclagem daquelas células)

2. utilize o código abaixo no lugar do existente (o código abaixo é cópia do código que o Laerte colocou no post #5, alterei somente este comando ~~~> .SetRange Range("D6").CurrentRegion )

Sub OrdenaPelaCorDaCélula()
 With ActiveSheet.Sort
  .SortFields.Clear
  .SortFields.Add(Range("K6"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 0, 0)
  .SortFields.Add(Range("K6"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 192, 0)
  .SortFields.Add(Range("K6"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(242, 242, 242)
    
  .SetRange Range("D6:K" & Cells(Rows.Count, 4).End(3).Row)
  .Header = xlGuess
  .MatchCase = False
  .Orientation = xlTopToBottom
  .SortMethod = xlPinYin
  .Apply
 End With
End Sub

 

Link para o comentário
Compartilhar em outros sites

Boa tarde,  Igor e osvaldomp

 

Amigo Osvaldo, obrigado por disponibilizar uma outra maneira do trecho

do código mencionado acima (sempre bem vinda novas formas de se fazer,

com isso aprendemos muito... valeu 😀👍)..

 

Igor, tu podes usar o que mencionei no post #7 ou que o Mestre Osvaldo

mencionou no post #8 (a execução é a mesma, só que a do Osvaldo está

se referindo ao intervalo "D6" até o "K"); concordo plenamente

com o nosso Amigo Osvaldo sobre mesclagem... eu particularmente não gosto

de mesclar células quando utilizo o VBA (somente uso-as para os títulos,

cabeçalhos, rodapés ou linhas/células que não interfiram de jeito nenhum no código VBA)..

 

Uma dica para tu não ter muita dor de cabeça com mesclagem, "não as use, somente se

for muito necessário, quando for utilizar códigos VBA "...

 

Aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha"👍

 

LaerteB🙂

Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!