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.
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.
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