Notifications
Clear all

Ativar macro ao clicar em uma célula

6 Posts
1 Usuários
0 Reactions
1,205 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde, pessoal!

Procurei nas pesquisas do fórum, mas não consegui nenhum resultado que me ajudasse.

Preciso ativar uma macro com um duplo clique numa célula, pois só sei fazer isso quando coloco pra clicar em algum objeto, mas gostaria de um duplo clique na própria célula.

Alguém pode me ajudar com esse comando?

Abraço!

Ricardo

 
Postado : 05/05/2015 2:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'Seu código vai aqui
    Cancel = True
End Sub

Importante: não remova o Cancel = True.

 
Postado : 05/05/2015 2:54 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Muito obrigado pelo retorno, Fernando.

Não consegui fazer rodar, porque o código que eu quero, deveria selecionar a própria célula em que estou clicando...

De acordo com o que vc me passou, seria isso?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Selection.Copy
Sheets("Cadastro").Select
Range("A7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Cancel = True
End Sub

Abraço!

 
Postado : 05/05/2015 3:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Ricardo, como estamos lidando com Objetos diferentes devemos usar a instrução WITH - Executa uma série de instruções em um objeto ou em um tipo definido pelo usuário tirado da ajuda do VBA.

Então a rotina ficaria da seguinte forma :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
    Selection.Copy
    
    With Sheets("Cadastro")
        'Para colar não precisamos selecionar a aba, só se quiser
        'caso contrário desabilite esta linha
        .Select
        
        .Range("A7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Cancel = True
        
        Application.CutCopyMode = False
   
    End With
    
End Sub

[]s

 
Postado : 05/05/2015 5:01 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Faça assim então:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    with Sheets("Cadastro")
        Target.Copy .Range("A7")
        .Range("A7").Value = .Range("A7").Value
    End With
End Sub
 
Postado : 06/05/2015 8:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Excelente, Fernando!

Muito obrigado mesmo!!!

Abraço!!!

 
Postado : 06/05/2015 10:53 am