Executar macro com ENTER

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á!

Ola @vitoralves, 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.

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

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

Parabéns, @vitoralves, esta evoluindo.

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

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…

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.

@vitoralves, entre em contato direto, veja aqui: https://wiki.documentfoundation.org/User:Schiavinatto

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