Notifications
Clear all

Macro Arrastar

7 Posts
3 Usuários
0 Reactions
1,941 Visualizações
(@ghuto_lima)
Posts: 70
Estimable Member
Topic starter
 

Pessoal,

Tenho uma planilha que consegui desenvolver a ajuda de vocês porem precisei fazer uma alteração no formulário e com isso a macro precisei ajustar.
Agora estou com a seguinte situação.

A Macro abaixo é uma soma, na coluna H e com a nova planilha tenho que arrastar a soma até a coluna L

Selection.AutoFill Destination:=Range("H17:L17"), Type:=xlFillDefault
Range("H17:L17").Select
Range("H1").Select

O problema é que esta indicando a linha "17", porem essa linha se altera todos os dias, não pode ser fixa, haverá dias que essa macro será H5:L5, H351:L351 e por aí vai.
As colunas permanecem a mesma, as linhas não.

Podem me ajudar por favor.

Obrigado.

 
Postado : 05/05/2015 7:45 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

como vc determina qual a linha? Digamos que 17 então seja variável, qual cálculo vc faz, mesmo que mentalmente, para definir que é pra rodar na 5, ou na 350?

 
Postado : 05/05/2015 8:20 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Eu não entendi, como minha rede caiu, não deu para responder antes..

Sub naoTestado()
 Dim Lastrow As Long
    Lastrow = Range("H" & Rows.Count).End(xlUp).Row
    
    Selection.AutoFill Destination:=Range("H17:L" & Lastrow), Type:=xlFillDefault
    Range("H17:L" & Lastrow).Select
    Range("H1").Select
End Sub

Eu não sei se vai funcionar.

Att

 
Postado : 05/05/2015 8:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

ghuto, você tem de levar em consideração o questionamento do Fernando, de como você determina quais linhas e ranges serão aplicados a formula.

No exemplo do Alexandre, temos um dos ranges Fixo : Range("H17 e o outro Variável - :L" & Lastrow), então se for ficar sempre entre as Colunas F e L, o ideal é determinar atraves de uma variavel a linha inicial e a final e assim ajustar a rotina.

Uma outra dica tirada do site da Microsoft seria :
Método de Range.AutoFill (Excel)
https://msdn.microsoft.com/pt-br/librar ... 95345.aspx

Na rotina abaixo podemos transformar os Ranges em Variáveis e assim ajustar a rotina, e veja que na mesma não precisamos selecionar os ranges para aplicar a formula.

Sub AutoFill_Destination()

    'Preenchimento automático nas células H17:L20 da Plan1,
    'com base no intervalo de origem H17:L17 da Plan1
    
    Set SourceRange = Worksheets("Plan1").Range("H17:L17") 'Base para o Preenchimento
    Set fillRange = Worksheets("Plan1").Range("H17:L20") 'preenchimento automático nas células H17:L20 da Plan1
    
    SourceRange.AutoFill Destination:=fillRange

End Sub

Então, como poderá ver se fizer uma pesquisa, existem várias formas de se fazer o que pretende, mas precisamos ter um parametro inicial.

[]s

 
Postado : 05/05/2015 9:00 am
(@ghuto_lima)
Posts: 70
Estimable Member
Topic starter
 

Ola pessoal,
Obrigado pelas respostas.

Minha planilha é a seguinte, todos os dias recebo os pagamentos do banco (pagamentos de boleto), então exporto para excel para ficar mais facil de trabalhar, só que cada dia o número de pagamentos se alteram, as vezes temos 10 pagamentos, as vezes 50, 250...e por aí vai.

Posto a planilha a planilha para entenderem como funciona.
A minha soma sempre vai ser nas colunas H até L, alterando as linhas.
Fiz um exemplo com 2 plans.

Não sei porque mas a plan ficou em 38mb...hahaha..

Segue o link para download.
https://www.dropbox.com/s/ret4ex20ycsws ... .xlsm?dl=0

 
Postado : 05/05/2015 9:43 am
(@edcronos)
Posts: 1006
Noble Member
 

eu não sei se entendi
mas eu uso essa linha em uma de minhas macros
.Range(.Cells(6, Cf1 - 1), .Cells(12, Cf1)).AutoFill Destination:= .Range(.Cells(6, Cf1 - 1), .Cells(12, Cf1 + N)), Type:=xlFillDefault ' Expande Formulas

no caso aí as linhas são fixas e as colunas se alteram ,mas pode inverter
Cells( linhainicial, coluna ), .Cells( linhaFinal, coluna )

 
Postado : 05/05/2015 9:46 am
(@edcronos)
Posts: 1006
Noble Member
 

considerando pelo que vc falou
vc adiciona novos dados, mas as formulas vão até a ultima linha dos dados colocados anteriormente
e quer arrstar até a ultima linha dos novos dados inseridos

Li = .Cells(Rows.Count, "H").End(xlUp).Row ' verifica a ultina linha que tem a formula
Lf= .Cells(Rows.Count, "H").End(xlUp).Row 'coloque a coluna dos dados no lugar do H
.Range(.Cells(Li, "H" ), .Cells(Li, "L" )).AutoFill Destination:= _
.Range(.Cells(Li, "H"), .Cells(Lf, "L")), Type:=xlFillDefault

talvez precise de ajustes

 
Postado : 05/05/2015 10:00 am