+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Eseguire macro a pressione di pulsanti su una determinata cella

  1. #1
    depurweb non è in linea Scolaretto
    Post
    62

    Eseguire macro a pressione di pulsanti su una determinata cella

    salve,
    cerco sempre un aiuto presso di voi, sperando che anche questa volta possiate aiutarmi.
    ho la necessita che alla pressione di "invio" su una determinata cella venga eseguita una macro e altre macro deve essere eseguite se vengono premuti i tasti "freccia" per intenderci sopra, sotto, destra, sinistra.

    il pulsante invio mi serve per eseguire una macro di ricerca, i tasti su e giu o destra e sinistra per andare avanti o inditro con i record.

    tutto ciò per far funzionare le diverse macro senza premere pulsanti che sono presenti nel foglio ed evitare quindi di utilizzare il mouse.

  2. #2
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Ciao
    leggi sull'help il metodo OnKey

    saluti

    Edit: ma ti consiglio di premere i pulsanti...che è meglio!...
    Ultima modifica di dodo47; 26-09-2013 18:05 

  3. #3
    depurweb non è in linea Scolaretto
    Post
    62
    mmmm.. ma per l'imitare l'istruzione ad una determinata cella??

  4. #4
    ricky53 non è in linea Scribacchino
    Post
    1,023
    Ciao,
    invia quello che hai prodotto e ... insieme si troverà la soluzione.
    S.O. W7; Office: 2003
    . . . . . . . . . . . . . . . . .
    Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

    Più chiara è la vostra spiegazione
    Più immediata sarà la nostra soluzione

  5. #5
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Quote Originariamente inviato da depurweb Visualizza il messaggio
    mmmm.. ma per l'imitare l'istruzione ad una determinata cella??
    Usa l'evento selectionChange del foglio.
    Es:
    foglio1: cella interessata C5
    codice:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("C5")) Is Nothing Then
        Application.OnKey "{RETURN}", "macro1"
        Application.OnKey "{right}", "macro2"
        Application.OnKey "{left}", "macro3"
        Application.OnKey "{down}", "macro4"
        Application.OnKey "{up}", "macro5"
    Else
        'riassegna funzioni originali
        Application.OnKey "{RETURN}"
        Application.OnKey "{right}"
        Application.OnKey "{left}"
        Application.OnKey "{down}"
        Application.OnKey "{up}"
    End If
    End Sub
    
    in un modulo
    Sub macro1()
    MsgBox "Hai premuto il tasto Invio"
    End Sub
    
    Sub macro2()
    MsgBox "Hai premuto freccia destra"
    End Sub
    
    Sub macro3()
    MsgBox "Hai premuto freccia sinistra"
    End Sub
    
    Sub macro4()
    MsgBox "Hai premuto freccia giù"
    End Sub
    
    Sub macro5()
    MsgBox "Hai premuto freccia su"
    End Sub
    ma il consiglio resta sempre lo stesso: crea dei pulsanti

    saluti
    Ultima modifica di dodo47; 28-09-2013 09:07 

  6. #6
    depurweb non è in linea Scolaretto
    Post
    62
    Salve,
    ho cercato di adattare il codice alle mie esigenze ed eccovi il risultato:
    codice:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("C7")) Is Nothing Then
        Application.OnKey "{RETURN}", "ENTER"
    Else
        'riassegna funzioni originali
        Application.OnKey "{RETURN}"
    End If
    
    If Not Intersect(Target, Range("G10")) Is Nothing Then
        Application.OnKey "{right}", "macroUP"
        Application.OnKey "{left}", "macroDOWN"
        Application.OnKey "{down}", "macroDOWN"
        Application.OnKey "{up}", "macroUP"
    Else
        'riassegna funzioni originali
        Application.OnKey "{right}"
        Application.OnKey "{left}"
        Application.OnKey "{down}"
        Application.OnKey "{up}"
    End If
    
    If Not Intersect(Target, Range("G10")) Is Nothing Then
        Application.OnKey "{RETURN}", "Rettangolo26_Click"
    Else
        'riassegna funzioni originali
        Application.OnKey "{RETURN}"
    End If
    
    End Sub
    il mio problema è il seguente: a me questo codice non funziona.
    la macro non si attiva
    anche quello che mi hai postato a volte funziona ed altre no.
    vorrei capire da cosa dipende.
    sono io che sono sfigato?

  7. #7
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Quote Originariamente inviato da depurweb Visualizza il messaggio
    anche quello che mi hai postato a volte funziona ed altre no....
    non saprei che dirti, a me funziona sempre.

    saluti

    invio_dx_sx_up_dw.zip

  8. #8
    depurweb non è in linea Scolaretto
    Post
    62
    devo forse abilitare qualcosa?
    nel vba devo abilitare dei riferimenti?
    ho aperto il tuo file ma niente

  9. #9
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Ripeto a me funziona (ex. 2003), non saprei cos'altro suggerirti tranne che quanto già detto: usa pulsanti...

    saluti

  10. #10
    depurweb non è in linea Scolaretto
    Post
    62
    allora:
    1- funziona ma la macro si attiva anche se il range selezionato non è quello scritto.
    2- se volessi aggiungere funzioni diverse a seconda di quale cella è selezionata?

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi