Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por JessicaRosa
#18390
Boa tarde, Pessoal

Estou começando a aprender a mexer em Macros e necessito criar uma em especial.
Criei uma planilha com diversas abas para controle de vendas por dia, estoque, vendas por modelo e despesas, porém tenho que manter algumas células bloqueadas para não ocorrer a alteração das fórmulas e, com isso, não se consegue aumentar as linhas da tabela e arrastar as formulas quando as vendas ultrapassam as linhas já pré-determinadas por mim.
O que eu necessito é de uma Macro que crie uma linha sempre depois da ÚLTIMA linha preenchida da tabela, com as formulas já determinadas.
Estou vasculhando a internet a uns 4 dias e as que encontro criam linhas no meio da tabela, pois se baseiam em uma terminada linha e criam a nova linha abaixo desta, ficando antes ou após a linha copiada na macro, não indo para o FINAL.

Exemplo:
Produto Mês Data Quantidade Valor Unitário Valor Vendido(bloqueada) Pagamento
....X.............X.........X..............X....................X..............................X..............................X
....Y..............Y.........Y................Y.....................Y...............................Y...............................Y
...Z..............Z........Z...............Z....................Z..............................Z..............................Z
(FINAL DA TABELA - CRIAR NOVA LINHA APERTANDO NO BOTÃO "INSERIR LINHA")

Muito obrigada!
Avatar do usuário
Por gfranco
Avatar
#18391
Boa tarde JessicaRosa.
Seria interessante que vc postasse sua planilha ( com dados fictícios mas mesma estrutura) com a macro de gravação escrita para uma sugestão mais acertada, entretanto, aqui vai uma sugestão meio "genérica" para resolver seu problema.
Como vc está trabalhando com macro eu imagino que a rotina de proteção tenha sido escrita via macro e não através da aba revisão->proteger planilha então:
Na macro de gravação, acrescente uma rotina de desproteção da referida planilha que receberá os dados e, após a gravação dos mesmos, a mesma macro fará a proteção novamente.
At
gfranco
#18393
Boa tarde, Gfranco

Segue a planilha em anexo.
Como você vai ver, a Macro está copiando a primeira linha e duplicando ela. Não consigo configurar nela a linha a ser copiada e a posição na qual será inserida.
Outra questão é da proteção da planilha, anexei ela desprotegida, porém quando protejo, ao tentar aplicar a Macro, aparece um erro. Não sei como fazer para aplicar a Macro com a planilha protegida também.

Muito obrigada!
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por gfranco
Avatar
#18396
Boa noite e Feliz Natal.
Veja se o anexo se aproxima de seu objetivo.
Escrevi as macros ( uma para a planilha vendas e outra para a planilha despesas) e deixei comentado o código no módulo1
Estou devolvendo o arquivo no mesmo formato que vc enviou: Planilha do Microsoft Excel 97-2003 (.xls).
At
gfranco
Você não está autorizado a ver ou baixar esse anexo.
#18403
Bom dia, Gfranco!
Obrigada! Espero que tenhas tido um ótimo Natal!
O objetivo da planilha é este mesmo, porém tive um probleminha com ela. Como todas as células estavam bloqueadas, não permitindo a adição dos dados, desbloqueei algumas para que fossem completadas mesmo com a planilha protegida. Quando terminei de fazer isto, começou a aparecer um erro o seguinte erro em vermelho:

If ULINHADADOS = ULINHAFORMULA Then
If Len(Trim(TARGET.Value)) > 0 Then
ActiveSheet.Range("c" & ULINHADADOS, "i" & ULINHADADOS).Copy
ActiveSheet.Range("C" & ULINHADADOS + 1, "i" & ULINHADADOS + 1).PasteSpecial xlPasteAll
Application.CutCopyMode = False
ActiveSheet.Range("C" & ULINHADADOS + 1).Value = vbNullString
ActiveSheet.Range("E" & ULINHADADOS + 1).Value = vbNullString
ActiveSheet.Range("F" & ULINHADADOS + 1).Value = vbNullString
ActiveSheet.Range("G" & ULINHADADOS + 1).Value = vbNullString
ActiveSheet.Range("I" & ULINHADADOS + 1).Value = vbNullString
End If

End If


End If
ActiveSheet.Range("C" & ULINHADADOS).Select


End Sub


Precisaria poder modificar as células, mesmo com as planilhas protegidas, impedindo a modificação apenas das com fórmulas.
Outra questão é quando aperto o botão inserir linha, ele está puxando a linha anterior com todos os dados preenchidos, haveria uma maneira de puxar ela vazia (sem dados), mas com as formulas?
Fiz as últimas modificações na planilha e estou colocando em anexo com todas as abas completas para ser feito nela, pode ser?

Muito obrigada!
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por gfranco
Avatar
#18405
Bom dia.
Posso fazer sim.
Hoje estou muito atarefado aqui no trabalho então creio que só amanhã conseguirei ver isso com calma....
Avatar do usuário
Por gfranco
Avatar
#18417
Boa noite Jessica
Veja na plan vendas se a macro atende seu objetivo.
Você não está autorizado a ver ou baixar esse anexo.
Por JessicaRosa
#18724
Gfranco, analisando a fórmula, consegui adaptar para a planilha de vendas por modelo! (:
Mas surgiu uma dúvida, como necessito analisar a penúltima linha das tabelas 'despesas' e 'estoque' e adicionar a linha antes do cálculo de soma, qual o código que analisa essa penúltima linha?
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord