Attivare macro con evento



  • Attivare macro con evento
    di Julio data: 23/03/2013 18:12:46

    Ciao, e' possibile far partire un msgbox appena l'operatore seleziona una cella per scrivere qualcosa?
    Grazie



  • di Textomb data: 23/03/2013 18:33:57

    Devi catturare l'evento Worksheet_Change del foglio di lavoro.



  • di Textomb data: 23/03/2013 18:39:33

    cioè intendevo dire Worksheet_SelectionChange...



  • di Textomb data: 23/03/2013 18:43:21

    Quindi, se la cella in questione è la A4 dovrai entrare nel foglio in cui sussiste la tua esigenza e scrivere...
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$4" Then MsgBox "ciao fratello!!!"
    End Sub
    



  • di Julio data: 23/03/2013 20:37:34

    Wow!
    Lo proverò. Grazie

    Quando puoi, potresti spiegarmi il codice:"target.address" ?
    Grazie

    Ps. E se volessi far partire una vera e propria macro (non solo un msgbox) appena l'operatore ha digitato qualcosa (ad esempio un numero) e lo ha confermato nella cella ( ad esempio con il tasto invio o con un clic del mouse su un punto qualunque del foglio?...forse e' meglio se apro una nuova discussione su questo tema.



  • di Vecchio Frac data: 23/03/2013 21:40:24

    If Target.Address = "$A$4" Then
    -oppure-
    If Target = [A4] Then

    L'evento SelectionChange si scatena quando sposti la cella attiva con la tastiera o con il mouse.
    Se la cella attiva diventa la A4 allora compare il messaggio.
    La differenza tra le due righe di codice di cui sopra è solo che in quella di Textomb verifichi l'indirizzo del target (che è la cella attiva) il quale viene rappresentato sotto forma di stringa; nel codice più compatto viene eseguito un Evaluate che verifica che il Target (che è un oggetto di tipo Range, come si capisce dalla firma dell'evento) sia la cella [A4].
    In entrambi i casi l'effetto è identico.

    Per rispondere alla seconda domanda, rileggi il post in cui Textomb aveva citato l'evento _Change: funziona in modo identico solo che viene richiamato quando l'utente modifica il contenuto di una cella. Ricordati di impostare Application.EnableEvents a False quando entri in una di queste routine e reimpostarlo a True all'uscita, per evitare inutili ricorsioni.





  • di Julio data: 23/03/2013 22:50:31

    Grazie, risposta, come sempre, esaustiva...come farete a sapere tutte queste cose proprio non ne ho idea.
    Complimenti per la vostra preparazione.
    Julio