Notifications
Clear all

Selecionar tabela

6 Posts
2 Usuários
0 Reactions
2,027 Visualizações
(@psmerlo)
Posts: 13
Eminent Member
Topic starter
 

Boa tarde pessoal

Estou ajustando uma planilha para nosso setor de faturamento, mas me deparei com uma dúvida. Vou tentar detalhar abaixo o que já fiz e o que preciso.
Tenho uma tabela com informações que são preenchidas diariamente. Ao final do dia preciso que esta tabela seja movida para outra planilha que contem os dados acumulados do mês, ou seja, os dados são gravados abaixo dos já existentes.

O problema é que tenho uma coluna na tabela que nem sempre é preenchida e não estou conseguindo ajustar na linha de comando para selecionar esta coluna. se alguém puder me auxiliar agradeço
Abaixo o código que estou usando

Sub Copiar()
'Copiar dados para nova planilha acumulado
Dim myrange As Range
Set myrange = Range("A5:O150")
myrange(1, 1).Select
If myrange(1, 1) <> "" Then
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight, 0, 1)).Select => Nesta linha de comando preciso selecionar mais uma coluna a direita que normalmente fica em branco para copiar para a outra planilha.

Sheets("Embarques acumulado mês").Select
If Range("a5") = "" Then
ActiveSheet.Paste
Exit Sub
End If
If Range("a5") <> "" Then
Range("A5").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
End If
End If
End Sub

Obrigado antecipadamente

Psmerlo

 
Postado : 10/04/2014 2:04 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não sei se entendi corretamente, mas se a intensão é selecionar uma Coluna a mais apos a ultima coluna "O", que é a ultima coluna em MyRange ("A5:O150") , então troque a sua instrução por esta:

Range(Selection, Selection.Offset(0, 15)).Select

[]s

 
Postado : 10/04/2014 9:31 pm
(@psmerlo)
Posts: 13
Eminent Member
Topic starter
 

A seleção com a linha de comando que marquei como negrito, seleciona somente até a coluna "N" e ai preciso selecionar a outra coluna ao lado que na maioria das vezes fica vazia

Psmerlo

 
Postado : 11/04/2014 8:38 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

ps, na linha que indiquei é selecionado até a Coluna "P", se quer selecionar a Coluna "O" é só alterar o numero que representa a Coluna:

Range(Selection, Selection.Offset(0, 15)).Select - Seleciona a té coluna "P"

Range(Selection, Selection.Offset(0, 14)).Select - Seleciona a té coluna "O"

Ou seja troque a sua linha:
Range(Selection, Selection.End(xlToRight, 0, 1)).Select => Nesta linha de comando preciso selecionar mais uma coluna

por uma das duas acima.

[]s

 
Postado : 11/04/2014 8:49 am
(@psmerlo)
Posts: 13
Eminent Member
Topic starter
 

Obrigado, entendi sua colocação e consegui fazer aqui, porém agora preciso selecionar as linhas abaixo. Só que nem sempre será um número igual de linhas
Como posso fazer para selecionar toda a tabela

Abaixo os códigos
Range(Selection, Selection.End(xlDown)).Copy
Range(Selection, Selection.Offset(0, 14)).Copy

Preciso que após a execução destes dois códigos eu possa copiar o que foi selecionado

Obrigado por enquanto

 
Postado : 11/04/2014 2:00 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

psmerlo, quando respondi me atentei mais a linha que dizia estar com problema e não reparei que mais abaixo tinha a instrução PASTE sem ter o COPY antes.

Mas antes de continuar, você não precisa ficar utilizando as instruções :
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select

Nas instruções acima, a primeira você está orientando para a partir da Celula Selecionada, selecionar a última celula preenchida na Coluna e depois Selecionar uma abaixo, então, podemos fazer isto de varias maneiras, mas como você já está utilizando antes a instrução myrange(1, 1).Select, elas podem ser trocadas por uma das linhas abaixo :
ActiveCell.End(xlDown).Offset(1, 0).Select
ous
Selection.End(xlDown).Offset(1, 0).Select

E nas linhas abaixo :
Range(Selection, Selection.End(xlDown)).Copy
Range(Selection, Selection.Offset(0, 14)).Copy

A primeira você está orientando para Copiar da Celula Selecionada até a última celula preenchida na Coluna, e depois, na segunda para copiar novamente as Colunas à Direita.
Então elas podem ser trocadas por esta:
Range(Selection.End(xlDown), Selection.Offset(0, 14)).Copy

Para que você possa entender melhor o que estas instruções fazem, procure seguir a macro Passo a Passo, diminua a janela do editor de macros para que possa ver a tela do excel no fundo, depois posicione o mouse no titulo da macro e vá teclando "F8" verá que a macro iniciará e irá sendo executada cada vez que tecllar "F8" e com isto verá as ações sendo executadas na planilha.
E para entender um pouco mais sobre as instruções que coloquei acima, de uma olhada no link abaixo:
Como selecionar células/intervalos usando procedimentos do Visual Basic no Excel
http://support.microsoft.com/kb/291308/pt-br

Finalizando, pelo que entendi, coloco a sua macro completa e ajustada, logicamente que poderia estar reescrevendo de varias formas, mas optei por esta para entender melhor:

Sub CopiarColarMauro()
    'Copiar dados para nova planilha acumulado
    Dim myrange As Range
    
    Set myrange = Range("A5:O150")
    
    myrange(1, 1).Select

    If myrange(1, 1) <> "" Then
        
        'Copiamos
        Range(Selection.End(xlDown), Selection.Offset(0, 14)).Copy
        
        'Selecionamos a Aba
        Sheets("Embarques acumulado mês").Select
        
        'Verificamos se A5 está vazia
        If Range("a5") = "" Then
            Range("A5").PasteSpecial
            se
            Exit Sub
    
        Else 'Se A5 não estiver Vazia
            Range("a5").End(xlDown).Offset(1, 0).PasteSpecial
        
        End If
            
    End If
    
    Application.CutCopyMode = False
    
End Sub

[]s

 
Postado : 11/04/2014 5:19 pm