Seleção de interval...
 
Notifications
Clear all

Seleção de intervalos

13 Posts
6 Usuários
0 Reactions
2,201 Visualizações
(@vtorresini)
Posts: 6
Active Member
Topic starter
 

Galera, boa noite.

Estou em um código onde estou selecionando o intervalo dessa maneira:

Range(Selection, Selection.End(xlUp)).Select

quero a seleção do intervalo pra cima da célula já selecionada menos uma linha.
Alguém sabe como fazer?

Obrigado!!

 
Postado : 21/01/2017 6:53 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite,

Pelo que entendi, você quer que a macro selecione intervalo acima da célula selecionada menos uma linha.
Portanto, se a célula selecionada for a V13, você quer que a macro selecione o intervalo V2:V12. É isso?
Se for, sugiro o seguinte código:

If ActiveCell.Row > 2 Then
    Range(Cells(2, ActiveCell.Column), ActiveCell.Offset(-1, 0)).Select
End If

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/01/2017 10:11 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

pq isso? evite a todo custo usar selection e select e activecell... por isso pergunto, pq vc quer selecionar um intervalo? Qual a coluna, qual a célula ativa e qual o intervalo esperado como resultado?

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/01/2017 10:25 pm
(@edcronos2)
Posts: 346
Reputable Member
 

fernando
eu não entendi bem oq ele quer
para tratamento de dados em geral realmente o uso dessas funções são prejudiciais, eu tbm adicionaria o offset

mas as vezes se quer um tratamento dos dados ou até mesmo do local selecionado

por exemplo
se pode querer fazer a interação na quantidade de linhas selecionada

SobeDesce=1 'desce/-1 'sobe
NL = -Selection.Rows.Count * SobeDesce

        Coluno = Range(Ti & li, Fc & Lf).FormulaLocal
        Range(Ti & li, Fc & Lf).ClearContents
        Range(Ti & li + NL, Fc & Lf + NL).FormulaLocal = Coluno

ou até mesmo fazer uma interação de areas selecionadas distintas

se bem que não sei se é o caso dele

 
Postado : 22/01/2017 2:47 am
(@vtorresini)
Posts: 6
Active Member
Topic starter
 

Obrigado pela resposta Jvalq

Sabe dizer o comando para selecionar a coluna até a linha que a coluna ao lado está preenchida?
Por exemplo:
Na coluna B as linhas b2:b10 estão preenchidas,porém esse número de linhas pode variar.
Qual seria a macro para selecionar a coluna A de a2:a10 ou até a linha que a coluna b está preenchida?

 
Postado : 22/01/2017 11:28 am
(@vtorresini)
Posts: 6
Active Member
Topic starter
 

pq isso? evite a todo custo usar selection e select e activecell... por isso pergunto, pq vc quer selecionar um intervalo? Qual a coluna, qual a célula ativa e qual o intervalo esperado como resultado?

Acho que te respondi com a resposta anterior.
Eu colei um intervalo em uma coluna B, porém ainda tenho que inserir uns valores na coluna A. Então selecionei a última linha desse paste (B10) e joguei para o lado(offset.(0,-1)) , selecionando a célula da coluna A (A10), com isso pensei em selecionar todas as linhas pra cima para inserir os dados.

 
Postado : 22/01/2017 11:40 am
(@mprudencio)
Posts: 2749
Famed Member
 

Este codigo faz o que vc quer mas o pessoal tem razão, sempre é bom evitar o uso de select, selection entre outros comandos.


Sub Selecionar()

Dim linha as long

linha = range("A" & rows.count).end(xlup).row

Range("A2:B" & linha).select

End Sub

Se vc explicar o que pretende fazer de fato, ou seja pq selecionar os dados?

E junto com a explicação uma planilha de exemplo tenho certeza que vai aparecer uma solução que te atenda

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 22/01/2017 5:34 pm
(@vtorresini)
Posts: 6
Active Member
Topic starter
 

Este codigo faz o que vc quer mas o pessoal tem razão, sempre é bom evitar o uso de select, selection entre outros comandos.


Sub Selecionar()

Dim linha as long

linha = range("A" & rows.count).end(xlup).row

Range("A2:B" & linha).select

End Sub

Se vc explicar o que pretende fazer de fato, ou seja pq selecionar os dados?

E junto com a explicação uma planilha de exemplo tenho certeza que vai aparecer uma solução que te atenda

Puts , porque evitar esses comandos?
Fiz um código basicamente com eles.

Cells.Find(what:="Conta").Select ' procurar a célula que possui "Conta" como texto
ActiveCell.Offset(1, 0).Select 'descer uma linha
Range(Selection, Selection.End(xlDown)).Select ' selecionar o range todo pra baixo
Selection.Copy ' copiar seleção
Workbooks("Layout_Final.xlsx").Sheets("Balance").Activate ' outra planilha
ActiveSheet.Cells(2, 2).Select ' selecionar linha 2 e coluna 2
ActiveSheet.Paste ' colar a seleção da outra planilha
Range("b2").End(xlDown).Select ' selecionar a ultima celula da coluna b
ActiveCell.Offset(0, -1).Select ' selecionar a celula ao lado da ultima celula preenchida da b

Range(Selection, Selection.End(xlUp).Offset(1, 0)).Select ' selecionar o range pra cima até a última célula vazia da coluna A
Selection.Value = "31/01/2016" ' Inserir a data nesse range

Uma planilha contém 12 sheets, cada sheet é um mes do ano. Na outra planilha é onde quero colar, uma sheet em baixo da outra, porém inserindo os meses de cada sheet.
Confesso que o código ficou um pouco grande, mas deu certo. Estou aprendendo a linguagem ainda, galera,

 
Postado : 22/01/2017 6:08 pm
DJunqueira
(@djunqueira)
Posts: 772
Prominent Member
 

Vc vai inserir dia 31 p/ todos os meses do ano, ou vai alterar manualmente?

Se sua dúvida foi respondida marque o tópico como RESOLVIDO usando o botão com marca verde.

 
Postado : 23/01/2017 1:04 am
benzadeus
(@benzadeus)
Posts: 78
Trusted Member
 

faguiar,

Postagem cruzada em: https://social.msdn.microsoft.com/Forum ... orum=vbapt

Ao realizar postagens cruzadas, favor informar o link de todos os fóruns onde você postou a pergunta. Isso é uma gentileza para quem tenta te ajudar.

Felipe Costa Gualberto
Microsoft Excel MVP
http://www.ambienteoffice.com.br

 
Postado : 23/01/2017 6:27 am
(@vtorresini)
Posts: 6
Active Member
Topic starter
 

Vc vai inserir dia 31 p/ todos os meses do ano, ou vai alterar manualmente?

Botei manualmente. Repeti o código 12x, porém com o último dia de cada mês.
Sabe de alguma maneira melhor?
Confesso que ficou um pouco lento o código, mas... foi oq eu soube fazer haha

 
Postado : 23/01/2017 6:22 pm
(@vtorresini)
Posts: 6
Active Member
Topic starter
 

faguiar,

Postagem cruzada em: https://social.msdn.microsoft.com/Forum ... orum=vbapt

Ao realizar postagens cruzadas, favor informar o link de todos os fóruns onde você postou a pergunta. Isso é uma gentileza para quem tenta te ajudar.

ahh blz.. não sabia

 
Postado : 23/01/2017 6:23 pm
DJunqueira
(@djunqueira)
Posts: 772
Prominent Member
 

Vc vai inserir dia 31 p/ todos os meses do ano, ou vai alterar manualmente?

Botei manualmente. Repeti o código 12x, porém com o último dia de cada mês.
Sabe de alguma maneira melhor?
Confesso que ficou um pouco lento o código, mas... foi oq eu soube fazer haha

Vc poderia montar algo no seu código como:
ÚltimoDiaMês = VBA.DateSerial(VBA.Year(Data), VBA.Month(Data) + 1, 0)

Se sua dúvida foi respondida marque o tópico como RESOLVIDO usando o botão com marca verde.

 
Postado : 23/01/2017 7:19 pm