Notifications
Clear all

Transformar macro automática em macro de Botão

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

Pessoal, bom dia!

Preciso de uma ajuda.

Tenho uma macro que uso uma vez por mês para transpor os registros de uma planilha para diversas abas na mesma planilha com base em um modelo.
a macro funciona perfeitamente para o que quero exceto por um único item: A macro é executada apos um determinado numero de coluna ser preenchido em cada linha.

Como os dados são copiados e colados de outras planilhas a automatização não funciona.

Gostaria que esta macro fosse dispara não pelo preenchimento da quantidade de planilha, mas pelo apertar de um botão.

podem me ajudar?

Segue a Macro funcionando:

Public Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim Y As Range, LR As Long
Dim plan As Worksheet, flg As Boolean
Dim nomePlan As String, i, j As Integer
If Target.Column > 8 Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set Y = Range(Cells(Target.Row, 1), Cells(Target.Row, 8))
If Application.WorksheetFunction.CountA(Y) < 8 Then Exit Sub
nomePlan = Cells(Target.Row, 6).Value
For Each plan In Worksheets
If plan.Name Like nomePlan Then flg = True: Exit For
Next
If flg = True Then
With Sheets(plan.Name)
LR = .Cells(Rows.Count, 6).End(xlUp).Row
Cells(Target.Row, 1).Resize(, 8).Copy
.Cells(LR + 1, 1).PasteSpecial
End With
Else
Sheets("Modelo").Copy After:=Sheets(1)
With ActiveSheet
.Name = nomePlan
Cells(Target.Row, 1).Resize(, 8).Copy
.Cells(2, 1).PasteSpecial
End With
'For i = 2 To Sheets.Count - 1
' For j = 2 To Sheets.Count - 2
' If UCase$(Sheets(j).Name) > UCase$(Sheets(j + 1).Name) Then
' Sheets(j).Move After:=Sheets(j + 1)
'End If
'Next j
'Next i
End If
'Application.CutCopyMode = True
'Application.ScreenUpdating = True
Sheets(1).Activate
End Sub

Basicamente o que a macro faz: quando todas as colunas de uma mesma linha é preenchida (de 1 a 8) ele lê a linha e verifica se se já tem uma aba com o nome indicado em uma das colunas(Coluna 6). se tiver ele copia e cola a linha nesta coluna. se não tiver ele cria una nova aba com o nome da coluna 6 baseado na aba modelo e depois copias os dados para a aba.

Hoje para funcionar sou obrigado a apertar F2 e Entrer para a macro verificar a linha e funcionar, só que tenho que fazer isso em 5 mil linhas mais ou menos.

Gostaria de apertar o botão e ele fazer isso em todas as linhas preenchidas.

Desde já agradeço.

John farlei

 
Postado : 25/02/2015 10:35 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Tem como mandar o modelo da planilha?

 
Postado : 26/02/2015 5:36 pm