Notifications
Clear all

Macro para localizar célula e gravar dados nela

5 Posts
4 Usuários
0 Reactions
1,084 Visualizações
 Rick
(@rick)
Posts: 0
New Member
Topic starter
 

Boa noite a todos,

É a primeira vez que pergunto no site. Sou iniciante em macros e VBA e estou comecei há pouco aprender sobre automatização de tarefas no Excel... Gostaria de pedir ajuda para criar um código... Seguinte: precisava de uma macro para localizar uma determinada célula e gravar um valor digitado numa TextBox de um UserForm dentro dessa célula da minha planilha... Pensei em fazer usando IF THEN ELSEIF END IF para cada situação, mas vai ficar com muitas linhas a minha macro... Anexei o arquivo nesta mensagem... Ainda estou começando a planilha... Tem bastante coisa a ser feita nela, mas, por ora, comecei com esse cadastro simples... Ainda vou entrar com os dados reais nela... Enfim, peço, por favor, ajuda dos senhores...

Obs.: Quando a macro for jogar o valor na minha respectiva célula da planilha "Controle", ela precisa sempre somar ao valor que porventura já esteja nessa célula...

Desde já agradeço a atenção.

 
Postado : 04/06/2016 6:55 pm
(@messiasmbm)
Posts: 0
New Member
 

Bom, boa noite...
Dei uma olhada em seu projeto como esperado de todo começo...
Em minha opinião (muito confuso e bagunçado) você para fazer um bom projeto tem que simplificar evitando ter que refazer quando ver que pode faze-lo melhor...
Não pode deixar todos os dados em uma só aba de sua planilha,coloque cada grupo em uma aba (GRUPO1,GRUPO2,GRUPO3...) e cada item com numeração única para evitar erros...
Refaça sua planilha e mande seu projeto novamente que eu te ajudo...

 
Postado : 04/06/2016 7:51 pm
(@messiasmbm)
Posts: 0
New Member
 

Também o porquê da divisão entre o primeiro e o segundo semestre?
Cada grupo com o mês(Janeiro) e três colunas ( comprado,vendido e lucro )...
Para seu projeto vc deixa uma aba para a exibição de todos os dados todos juntos (somente para demonstração) que será atualizada a cada alteração.
A macro irá copiar os dados de cada aba com cada grupo um debaixo do outro automaticamente e por último o total.

OBS: Não mexi no vba somente na planilha...
Arrume para que eu possa te ajudar...

 
Postado : 04/06/2016 8:20 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia Rick

Seja bem-vindo ao fórum!

Movi teu tópico para a sala VBA & Macros, que é o assunto da tua dúvida.

Como você é novato no fórum, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s

Patropi - Moderador

 
Postado : 05/06/2016 6:17 am
(@osvaldomp)
Posts: 857
Prominent Member
 

Instale o código abaixo no módulo do Userform1

'módulo do UserForm1
Private Sub CommandButton1_Click()
 Dim k As Long, m As Long, c As Long
  k = Range("C21:C400").SpecialCells(xlCellTypeVisible).Find(cmb_grupo.Value, lookat:=xlWhole).Row
  c = Cells(k, 3).Offset(2, 1).Resize(, 45).Find(cmb_mes.Value, lookat:=xlWhole).Column
  m = Range("C21:C400").Find(cmb_item.Value, lookat:=xlWhole, after:=Cells(k, 3)).Row
 Cells(m, c).Value = Cells(m, c).Value + CDbl(txt_valor.Value)
End Sub

E instale o código abaixo no módulo do UserForm2

'módulo do UserForm2
Private Sub CommandButton1_Click()
 Dim k As Long, m As Long, c As Long
  k = Range("C21:C400").SpecialCells(xlCellTypeVisible).Find(cmb_grupo.Value, lookat:=xlWhole).Row
  c = Cells(k, 3).Offset(2, 1).Resize(, 45).Find(cmb_mes.Value, lookat:=xlWhole).Column
  m = Range("C21:C400").Find(cmb_item.Value, lookat:=xlWhole, after:=Cells(k, 3)).Row
 Cells(m, c).Offset(, 3).Value = Cells(m, c).Offset(, 3).Value + CDbl(txt_valor.Value)
End Sub

obs.
1. antes de testar desfaça a mesclagem de células de todas as linhas com o texto "GRUPOn" na coluna 'C'
2. os códigos acima não verificam se algum campo do Form for deixado vazio
3. sugiro que você altere o carregamento da cmb_mes para exibir somente os meses correspondentes ao semestre selecionado, em lugar de exibir sempre os 12 meses

 
Postado : 05/06/2016 2:22 pm