Autocompletar com lista suspensa no Calc

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?

exemplo : imagem da tela

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

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

  1. 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;…

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

  1. 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);"")

Arquvio de exemplo:

Se vc tiver alguma sugestão de como melhorar as alterações que eu fiz, seria muito bem vinda

Em G4 use a formula =SE(CONT.SE(tbNomes;G6)>0;"";SEERRO(PROCV(MAIOR(Base.A2:A22;1);$Base.$A$2:$Base.$E$22;5;0);""))

=============================

Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.

Olá Gilberto Schiavinatto, eu apliquei uma formatação condicional para alterar a cor de fundo da planilha, e a lista de opções do autocompletar não é exibida. Vc poderia me ajudar a contornar esse problema?
Obrigado!

exemplos:
com formatação condicional não exibe a lista de sugestões
erro autocompletar- formatação condicional.ods

se eu tirar a formatação condicional ele funciona
autocompletar-sem formatação condicional - fuciona.ods

ACHO, que a Formatação condicional, por algum motivo, desconheço, esta interferindo sobre Eventos de planilha, uma saída é Zebrar área, via macro.

Veja no arquivo em devolução, com a macro já aplicada e esta funcionando, edite a macro para alterar a cor, observações na macro.