Foto de João C.
João Victor há 4 anos
Enviada pelo
Site

Preenchimento de tabela ao clicar em uma informação.

Tenho uma tabela com 25 colunas e 10 linhas. Do lado de fora da tabela, tenho cinco células numeradas de 1 a 5.

Como crio algo que, ao clicar em um dos números fora da tabela, a célula A1 fique com o mesmo número? Após isso, ao clicar novamente em qualquer um dos 5 números, a célula B1 fique com o mesmo número clicado. E assim sucessivamente até a Y1. Após isso, A2 até Y2, até chegar na linha 10.

Excel Geral
2 respostas
Professor Paulo M.
Respondeu há 4 anos
Contatar Paulo

Boa tarde João!

 

Nesse caso não daria para ser feito usando apenas fórmulas, teria que fazer um código no VBA mesmo, no caso a ação seria iniciada com o evento "MouseClick" e você teria que fazer um looping onde ele guarda a última célula ativa e quando tivesse o evento MouseClick ele atribuísse o valor da nova célula ativa à célula ativa anterior, no mesmo looping teria que fazer ele ir caminhando para a próxima coluna/linha onde o novo valor seria atribuído.

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta

Envie sua pergunta

 
Professor Marcello A.
Respondeu há 4 anos
Contatar Marcello

Boa tarde Joao Victor!

Nosso colega Paulo realmente lhe deu o caminho correto, porem, detalhou todo o processo, segue abaixo, vc precisara criar 2 loopings para isso (um para "correr" as colunas e outro para "correr" as linhas)

 

Etapa 1: Crie o  evento double click nas celulas que vc tem as 5 opcoes, um otimo exemplo de como fazer isso esta abaixo, voce devera criar esse codigo dentro da planilha em que voce quer aplicar essa formatacao e nao em um modulo especifico.

**************************************************************************************************

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("AA1:AA5")) Is Nothing Then ' O Range AA1:AA5 eh aonde voce tera suas opcoes
Cancel = True
call FormatarTabela(ActiveCell.value)
End If
End Sub

**************************************************************************************************

 

A segunda etapa (e mais complicada) eh criar o looping de 25 colunas e entao 10 linhas, este sim sera criado em um modulo da planilha

********************************************************

Sub FormatarTabela(Valor As String)

Dim ContColunas As Integer
Dim ContLinhas As Integer
ContColunas = 1
ContLinhas = 1

Range("A1").Select

Do Until ContLinhas > 10 ' numero de linhas que voce quer o loop

    Do Until ContColunas > 25 'numero de colunas que vc quer o loop
    
        If ActiveCell.Offset(ContLinhas - 1, ContColunas - 1).Value = "" Then
            ActiveCell.Offset(ContLinhas - 1, ContColunas - 1).Value = Valor

End
        Else
       
       ContColunas = ContColunas + 1
         
        End If
    
    Loop
    
    ContColunas = 1
    ContLinhas = ContLinhas + 1

Loop

MsgBox ("Tabela toda preenchida")

End Sub

*******************************

 

esse codigo eh BEM complexo apesar de poucas linhas, eu fiz um teste com uma tabela menor de 4x5 e funcionou perfeitamente.

utilizei o looping "DO UNTIL" mas poderiamos usar "DO WHILE" ou ateh mesmo "FOR", em alguns casos especificos o codigo fica mais "correto" utilizando um ou outro mas todos eles estao certos se sua solucao funcionar!

Se voce tiver interesse em aprender mais de Excel/VBA e quer falar com alguem com mais de 10 anos de experiencia na ferramenta fique a vontade para entrar em contato

Espero que voce consiga resolver seu problema com a solucao acima

 

Um abraco!

 

Prof Marcello

 

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta

Aprenda do seu jeito, no seu ritmo

Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App
Escaneie o QR Code para baixar