Pergunte aqui
1

Executar macro com ENTER

perguntadas 2019-08-06 23:31:39 +0200

imagem do gravatar de vitor alves

updated 2019-08-07 16:13:46 +0200

Olá,

Tenho uma planilha que ao preencher aproximadamente 7 campos, aperto o botão para lançar os dados no controle. Queria saber se é possível executar a macro do botão quando o último campo for preenchido e eu apertar ENTER. Pelo fato de se inserir dados várias vezes, se conseguisse executar a macro sem necessidade do mouse, me ajudaria.

Caso haja solução, queria que aparecesse uma MsgBox confirmando se quero confirmar a execução, com os botões SIM e NÃO. Já usei MsgBox antes, porém, com esse opção de executar ou não uma macro para confirmação, pra mim é novo.

Uma outra alternativa seria, ao apertar TAB, o foco iria para o botão. Assim, apenas iria apertar o ENTER para executar a macro. Caso tenha uma solução pra isso, minha dúvida fica restrita à MsgBox acima.

Grato desde já!

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

0

respondidas 2019-08-07 02:03:21 +0200

Ola @vitor alves, segue as macros....

REM  *****  BASIC  *****

Sub ConteudoAlterado( oCelula )
    ' Esta macro é ligado a Evento de planilha / Conteudo alterado.    
    ' Teste se o objeto selecionado é uma célula individual
    If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub
    If Right(oCelula.AbsoluteName,5) = "$F$11" Then   '5 é qtde de caracteres $F$11
       'Chamar a macro desejada
        Call VoceTemCertezaSimNao 
    End If  
End Sub


'================================================|
sub VoceTemCertezaSimNao
'================================================|
Dim Resposta as Integer
Resposta = MsgBox ("Você tem certeza?", 36, "ATENÇÃO")
   If Resposta = 6 Then    REM SE RESPOSTA SIM(6)
       Call SUAMACRO         REM MACRO = Macro no caso Positivo (Sim)
   end If
' para permanecer na célula
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")   
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0,  Array())  
end Sub


sub SUAMACRO    'só para teste vai para B2.
    Dim document, dispatcher As Object
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "ToPoint"
    args1(0).Value = "Plan1.B2"
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end Sub

E o arquivo teste

-----------------------------------------------------------------------------

ATENÇÂO:: Caso queira dar mais detalhes a sua pergunta, use Descrição da imagem na pergunta ou Descrição da imagem abaixo. Grato.

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

editar assinalar como ofensivo Excluir Link mais

Comentários

Gilberto, era exatamente o que precisava. Excelente macro!

Só um detalhe. Minha macro exclui os campos, inclusive o último preenchido, para novo preenchimento. Quando dou ENTER, como exclui o conteúdo da última célula, cai em um ciclo sempre perguntando se desejo continuar até clicar NÃO. Creio eu que isso resolva se colocar condição IF na macro "ConteudoAlterado" para caso a alteração for igual a "" (vazio) não dar call na macro, mas não sei fazer isso, ainda.

No mais, obrigado pela ajuda!!!

imagem do gravatar de vitor alvesvitor alves ( 2019-08-07 03:27:57 +0200 )editar
1

Consegui!! Adicionei "If oCelula.String = "" Then Exit Sub", abaixo de "If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub", como uma nova condição. Aí não tem problema excluir o conteúdo da célula que não vai dar call na macro.

Valeuuuuu

imagem do gravatar de vitor alvesvitor alves ( 2019-08-07 04:52:29 +0200 )editar

Parabéns, @vitor alves, esta evoluindo.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-08-07 04:54:12 +0200 )editar

Evoluindo a passos de tartaruga mas vai kkk tem muita coisa nessa macro que ainda não entendo. Quem sabe um dia.

imagem do gravatar de vitor alvesvitor alves ( 2019-08-07 05:02:53 +0200 )editar
1

Falando a verdade, também não entendo muita coisa, mas quando encontro macro útil, costumo guarda~lá no Autotexto do Writer com o nome que a identifica o que ela faz, assim quando surge algum projeto costumo juntar "pedaços" para chegar onde desejo. Fica a dica....

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-08-07 13:54:18 +0200 )editar

Verdade. Até pensei em fazer uma coisa parecida com isso. Já fiz umas macros que me ajudam bastante, claro com a ajuda da internet e teste pessoal. Vou fazer isso. Fica muito mais prático quando se faz outro projeto. Obrigado pela dica.

imagem do gravatar de vitor alvesvitor alves ( 2019-08-07 16:39:59 +0200 )editar

@vitor alves, entre em contato direto, veja aqui: https://wiki.documentfoundation.org/U...

Estou fazendo uma revisão nas minhas, posso repassar.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-08-07 16:50:30 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2019-08-06 23:31:39 +0200

Lidas: 21 vezes

Última atualização: Aug 07