Ola @mrkalvin, sobre a função CÉL, o LibreOffice Calc utilizará a posição da célula na qual esta fórmula está localizada. O Microsoft Excel utiliza a referência da célula na qual o cursor está posicionado.
@mrkalvin obrigado por contribuir. Era justamente isso que eu queria.n E, @Gilberto Schiavinatto confirma o que @mrkalvin disse sobre a impossibilidade de se conseguir isso co calc?
@Francys , Inspirado na resposta do @Gilberto Schiavinatto fiz uma proposta de Lista suspensa dinâmica com código direto no validação. Partindo da premissa que basta digitar na célula auxiliar três letras para que a escolha dos dados que as tenham na inicial sejam selecionados em célula de validação. Mas claro, é possível utilizar somente uma letra inicial também.
Sem usar o desloc. Assim, na lista suspensa é possível ao digitar numa célula auxiliar qualquer letra ou letras mudar a ordem da validação automaticamente sem deixar espaços em branco.
Basta usar um código na validação e definir um intervalo de células (onde ficam os seus dados). Aqui o arquivo para você testar se quiser.
Postei no meu blog uma solução com um vídeo. Ao artigoo título exatamente de “Lista suspensa dinâmica”. Quem quiser dar uma olhada e baixar o arquivo.
Ola @Francys, segue uma sugestão, não é exatamente o que necessita, mas fica perto.
Consegui com a ajuda do @Grafeno Como executar uma macro no Calc ao selecionar uma célula de uma área?
Usei Eventos de planilha… / Conteúdo alterado.
Complemento
Arquivo com alteração, observações no arquivo .
Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha a esquerda da resposta, para finalizar a pergunta.
Parabéns, esse recurso ficou muito interessante.
Como vc inseriu esse recurso de ao terminar sair da celula ele já abre a lista?
Obrigado
Fiz um relatório da forma como uso:
https://drive.google.com/open?id=1_03izB75NmTNtnDAE60JhGTJLQhcVI22
-
Teria como o conteúdo da coluna E em laranja ficar na coluna A ? Pra eu não ter que ocultar a coluna E.
-
Como eu adiciono esse efeito que ao sair da digitação da celula, no meu caso da coluna F, ela já exibe a lista de opções?
-
O primeiro item da lista sempre está em branco, teria como remover esse item em branco?
Vide Complemento na Resposta acima.
obrigado pela ajuda!
Estou adaptando o seu exempo ao meu uso, mas ainda não consegui fazer a lista aparecer automaticamente assim que digito o texto e aperto enter.
Do mesmo modo do seu exemplo.
O que devo fazer pra ter esse efeito?
No seu exemplo, quando eu recorto o conteudo as duas colunas A e B, colo em outra coluna qualquer. Eu perco esse efeito em que a lista aparece automatico ao digitar e apertar enter.
Obrigado
Recortei a coluna E colei em A
Deletei a coluna E
Acertei a Macro. (Column = 4)
Em Programação.G1 acertei a formula.
Ligar a macro a Eventos de planilha: 1- Na aba Base, clique direito, selecione Eventos de planilha: 2- Na lista Evento selecione Conteúdo alterado; 3- Clique botão Macro, 4- Selecione seu arquivo e a macro ConteudoAlterado, OK OK.
Fantástico ficou muito bom mesmo.
Agora estou em outro pc, alterei as configurações de segurança da Macro. E funcionou do jeito que eu precisava.
Vc é muito bom, uma injeva boa dos seus conhecimentos em Calc.
Parabéns e obrigado pela paciência em ajudar.
Um ótimo ano pra vc!
Fico feliz que te serviu.
Por gentileza, click na bolinha a esquerda da resposta, para finalizar a pergunta.
Ola @mrkalvin,
Sobre o item 3) O primeiro item da lista sempre está em branco, teria como remover esse item em branco?
Em Dados validação esta Lista
, troque por esta formula DESLOC(Lista;0;0;MAIOR(A7:A27;1);1)
O primeiro item branco deixa de aparecer.
eu tentei mudar e não funcionou, será que alterei o local certo?
[arquivo exemplo:]
https://drive.google.com/open?id=1WejMeGHX8zlxBCse_Sh0JTrfezBBSJ-7
Falha minha, altere para
DESLOC(Lista;0;0;MAIOR(Programacao.A4:Programacao.A28;1);1)
Lembrando se alterar a área do arquivo, altere a validação.
Está ficando sensacional.
eu travei as celulas pra poder carregar pras linhas de baixo:
DESLOC(Lista;0;0;MAIOR(Programacao.$A$4:Programacao.$A$28;1);1)
Mais uma coisa.
Quando aperto a tecla “DEL” ou na “Linha de entrada” eu apago o conteúdo da coluna E na celula Base.
o Calc exibe a lista de sugestões mesmo não tendo o que sugerir (na primeira linha aparece ‘Erro:502’ e nas outras linhas aparece a última sugestão feita).
- Teria como alterar a macro pra quando esta celula estiver vazia não exibir a lista de sugestões e também quando eu digito algo na celula e aperto a tecla pra cima ou pra baixo, também teria como não exibir a lista de sugestão?
Muito obrigado mais uma vez!
Sobre o acerto da formula ok, havia esquecido do detalhe.
Quanto a célula estiver vazia, acho que da para acertar, vou dar uma pensada, mas o teclar para cima/baixo não imagino como…
Não sei se é possivel capturar o evento do teclado no visual basic pra usar antes de chamar ‘AbrirListaSelecao’
Sub ConteudoAlterado( oCelula )
rem por Grafeno ask.177787
' Testar se o objeto selecionado é uma célula individual '
If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub
' Endereço da Célula '
oEnd = oCelula.CellAddress
' Celula no intervalo f7:f27 '
' Coluna 5 e linha entre 1 e 21 '
If oEnd.Column = 4 Then
If oEnd.Row >= 1 And oEnd.Row <= 21 Then
'Não sei seria possível alterar algo aqui e capturar a tecla e verificar se a tecla é diferente de "tecla para cima" e "tecla para baixo" então chamar a lista de sugestão
Call AbrirListaSelecao
End If
End If
End Sub
@mrkalvin, altere a macro conforme abaixo: a parte incluída esta entre os traços.
Sub ConteudoAlterado( oCelula )
rem por Grafeno ask.177787
' Testar se o objeto selecionado é uma célula individual '
If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub
'====================================
Dim oSel as Object
Dim Var1 as String
oSel = ThisComponent.getCurrentSelection()
' MsgBox oSel.getString()
Var1 = oSel.getString()
If Var1 = "" Then Exit Sub
'====================================
' Endereço da Célula '
oEnd = oCelula.CellAddress
' Celula no intervalo B7:B27 '
' Coluna 1 e linha entre 6 e 26 '
If oEnd.Column = 1 Then
If oEnd.Row >= 6 And oEnd.Row <= 26 Then
' Chamar a macro desejada '
Call AbrirListaSelecao
End If
End If
End Sub
Se der Enter com a célula em branco, nada acontece.
Obrigado a dica da alteração da macro funcionou, quando teclo “DEL” ele não exibe mais a lista de sugestões.
Mas a dica de ativar a mensagem de erro não pode ser usada senão não exibe a lista de sugestões.
Eu resolvi isso de outra forma:
Quando não existe nada preenchido na planilha base ele dá erro “#VALOR!” na célula G4 da planilha “Programacao”, então eu usei o SEERRO e deixei a celula G4 em branco nesse caso.
Já a coluna A da planilha “Programacao” eu mudei a formula
-
se g4 estiver em branco (caso da
planilha base não preenchida) ele
vai incrementado a numeração e isso
ativa todas as opções na lista de
sugestão. SE($G$4="";LINHA()-3;… -
Se foi digitado algo na planilha
base, vai verificar se o que foi
digitado está disponivel na lista,
se não tiver disponivel ele vai
incrementado a numeração e isso
ativa todas as opções na lista de
sugestão.
SE(É.NÃO.DISP(PROCV(""&$G$4&"";$B$4:$B$28;1;0));LINHA()-3;…
continuando…
- SE o que foi digitado está
disponivel na lista, ele faz o
codigo da lista de sugestão
funcionar
SE(ÉNUM(LOCALIZARB($G$4;tbNomes:B4));MÁXIMO($A$3:$A3)+1;0))
Agora surgiu outra duvida,
Teria como alterar a macro pra quando eu selecionar algo na lista de sugestões, a macro automaticamente, na planilha “Programacao”, deixar o conteúdo de G4 em branco, mas manter a formula
=SEERRO(PROCV(MAIOR(Base.A2:A22;1);$Base.$A$2:$Base.$E$22;5;0);"")
Se vc tiver alguma sugestão de como melhorar as alterações que eu fiz, seria muito bem vinda