Notifications
Clear all

Macro para copiar dados para nova planilha

2 Posts
2 Usuários
0 Reactions
833 Visualizações
(@rattobr)
Posts: 0
New Member
Topic starter
 

Olá,

Bom dia, estou aproveitando este POST para tentar solucionar minha duvida, caso eu esteja no lugar errado primeiramente me desculpe.

Segue abaixo minha macro, que se resume em um botão dentro da planilha com a função de copiar os DADOS na aba Informações e colar na aba "BD", com o intuito de gerar um Banco de Dados, ela não esta apresentando errado porém, quando executo ela ela não copia nada para aba "BD".

Sub Add()

Dim campos As Variant
Dim k As Byte

campos = Array(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22)

Sheets("Informações").Activate

p1 = Cells(8, 4).Select
p2 = Cells(8, 1).Select
p3 = Cells(8, 16).Select
p4 = Cells(2, 4).Select
p5 = Cells(2, 1).Select
p6 = Cells(2, 16).Select
p7 = Cells(12, 4).Select
p8 = Cells(12, 1).Select
p9 = Cells(12, 16).Select
p10 = Cells(16, 4).Select
p11 = Cells(16, 1).Select
p12 = Cells(16, 16).Select
p13 = Cells(18, 4).Select
p14 = Cells(18, 16).Select
p15 = Cells(20, 4).Select
p16 = Cells(20, 16).Select
p17 = Cells(22, 4).Select
p18 = Cells(22, 1).Select
p19 = Cells(22, 16).Select
p20 = Cells(24, 4).Select
p21 = Cells(24, 1).Select
p22 = Cells(24, 16).Select

Selection.Copy

Sheets("BD").Activate
Range("a2").Select

Do Until k < 23

    Cells(2, k).Select
    SheetsActiveSheet.Paste
    
    ActiveCell.Offset(1, k).Value = campos(k).Value
    Application.CutCopyMode = False
    
Loop


Application.ScreenUpdating = False

Cells.EntireColumn.AutoFit

Application.CutCopyMode = False

Sheets("Informações").Activate

End Sub

Desde já agradeço.

 
Postado : 07/03/2016 6:59 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

RattoBr, evite utilizar de tópicos abertos por outros usuários, apesar de serem parecidos, cada um tem sua particularidade.

O ideal seria anexar seu modelo, mas analizando as linhas de sua rotina, temos :
Você criou um Array e em seguida cada um é selecionado sem efetuar nenhuma ação, logo depois temos Selection.Copy e como a ultima celula selecionada se refere a p22 = Cells(24, 16).Select estamos copiando somente o que se encontra nesta seleção, em seguida criou um Loop : Do Until k < 23 onde o valor de "k" é sempre "0" o que força a sair do loop sem efetuar nenhuma ação encerrando a rotina, e mesmo que a mesma continuasse teremos erro nas linhas :
Cells(2, k).Select - o erro aqui é que a seleção seria linha 2 coluna 0
SheetsActiveSheet.Paste - aqui, o correto é ActiveSheet.Paste

E na sequencia limpamos o que foi copiado na instrução "Application.CutCopyMode = False", ou seja se o loop continuar não temo uma nova instrução de Copy.

Diante disto, reforço, anexe seu modelo, ficara mais facil ajudar e ajustar sua rotina.

[]s

 
Postado : 07/03/2016 9:55 am