Notifications
Clear all

DoubleClick com Formulário preenchendo na célula clicada

8 Posts
3 Usuários
0 Reactions
1,707 Visualizações
(@maxnet)
Posts: 10
Active Member
Topic starter
 

Pessoal, é possível fazer uma macro que quando der duplo click na célula X, abrir um formulário com "4 textbox", botão "Salvar" e botão "Sair"... e os dados inseridos nestes 4 textbox serem colocados verticalmente na "célula clicada" e nas linhas "logo abaixo" do local clicado inicialmente.

Exemplos:
Se clicar em G15, abrir um formulário para preencher e salvar as informações em G15, G16, G17, e G18.
Se clicar em B52, abrir um formulário para preencher e salvar as informações em B52, B53, B54, e B55.

Se for possível em vba, LIMITAR essa macro para só ser acionada se for clicado nas células/linhas
A15:H15
A37:H37 e
A52:H52 que seriam as células que "receberiam" os dados informados no 1º textbox do formulário.

MaxNet

 
Postado : 27/06/2018 6:48 pm
(@klarc28)
Posts: 971
Prominent Member
 

Anexo

 
Postado : 27/06/2018 6:52 pm
(@maxnet)
Posts: 10
Active Member
Topic starter
 

Perfeito... Exatamente isso... Só que apareceu um pequeno problema... O formulário não está reconhecendo E EXIBINDO os dados já inseridos nas células anteriormente... Tem como mostrar no formulário os dados existentes?... Seria algo como se estivesse EDITANDO as células...

 
Postado : 28/06/2018 6:28 pm
(@maxnet)
Posts: 10
Active Member
Topic starter
 

Pessoal, usei a busca avançada pra tentar resolver este problema, aprendi muitas coisas novas, mas não obtive êxito na solução da minha dúvida...
Estou usando o código abaixo que alterar (via textbox) a célula onde cliquei...

Private Sub TextBox1_Change()
Plan1.Cells(linha, coluna).Value = Me.TextBox1.Value
End Sub
'onde: 
'linha = Target.Row
'coluna = Target.Column

Preciso que o valor ATUALMENTE EXISTENTE na célula APAREÇA no textbox "E seja POSSÍVEL EDITÁ-LO", ou seja acrescentar novas informações e salvar novamente.

Até consegui fazer aparecer o valor atualmente existente na célula usando: "TextBox1.Value = Plan1.Cells(linha, coluna).Value" mas o valor que aparece NÃO permite alteração.
Tentei "TextBox1.Enabled = True" mas não resolveu.

Alguém sabe resolver isto?

 
Postado : 30/06/2018 8:12 am
(@mprudencio)
Posts: 2749
Famed Member
 

Mas pq nao digitar direto na celula?

Não complique o simples.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 30/06/2018 8:38 am
(@maxnet)
Posts: 10
Active Member
Topic starter
 

Mas pq nao digitar direto na celula?

Não complique o simples.

Olá senhor MPrudencio, obrigado pelo retorno...
A planilha possui funcionalidades de proteção VBA, entre elas, o bloqueio de teclas e combinação de teclas (F1 a F12, ctrl, alt, shift, etc)... Se eu permitir a digitação DIRETO na célula, toda proteção vai por água abaixo, pois é possível pressionar teclas ou conjuntos de teclas durante a edição da célula... (por exemplo, a função F12 pode ser executada a partir da célula "em edição")

A solução que encontrei foi esta: Ao clicar na célula, abrir um formulário textbox para o usuário inserir os dados, e via VBA, desproteger planilha, gravar as alterações inseridas no textbox e proteger planilha novamente... Estas coisas (e muitas outras) eu já aprendi a fazer aqui no PLANILHANDO...
Lembrando que a função "permitir a edição de intervalos" NÃO resolve o problema, pois as teclas desabilitadas via vba, tornam-se ativas novamente durante a "edição de célula".

o que estou na dúvida é: Preciso que o valor ATUALMENTE EXISTENTE na célula APAREÇA no textbox "E seja POSSÍVEL EDITÁ-LO"

Alguém tem o conhecimento necessário para fazer isso???
Tenho certeza que PARA VOCÊS que entendem de VBA/EXCEL esta não é uma tarefa difícil... Fazer com que o valor ATUALMENTE EXISTENTE na célula APAREÇA no textbox "E seja POSSÍVEL EDITÁ-LO"

 
Postado : 30/06/2018 10:04 am
(@mprudencio)
Posts: 2749
Famed Member
 

No evento inialize do form coloque este codigo

TextBox1.Value = ActiveCell.Value
TextBox2.Value = ActiveCell.Offset(1, 0).Value
TextBox3.Value = ActiveCell.Offset(2, 0).Value
TextBox4.Value = ActiveCell.Offset(3, 0).Value

Em tempo é possivel proteger apenas o que interessa, deixando as celulas que recebem dados totalmente editaveis se quiser.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 30/06/2018 11:19 am
(@maxnet)
Posts: 10
Active Member
Topic starter
 

Perfeito senhor MPrudencio! Exatamente isto!...

Eu tinha tentado este "TextBox1.Value = ActiveCell.Value" mas, como sou novato, coloquei dentro do "Private Sub TextBox1_Change()"... O resultado era o valor atual SEM PODER EDITAR...
O correto é colocar dentro do "Private Sub UserForm_Initialize()"

Obrigado!

 
Postado : 30/06/2018 12:37 pm