Ritorno a cella di partenza

  • Ritorno al punto di partenza di Fabio22
    Ciao a tutti!
    sto cercando l’istruzione vba appropriata per portare il cursore dalla cella in cui attualmente si trova a quella in cui si trovava immediatamente prima.
    spiego il perchè. ho un’applicazione che lavora in worsheet_selectionchange la quale invia messaggi di errore (con msgbox) allorchè in una cella vengono digitati dati non corretti.
    ora, quando l’utente, ricevendo il messaggio, dopo aver premuto l’ok della finestra di messaggio
    (che a questo punto scompare) ritorna alla cella di partenza per digitarvi il dato corretto, ritorna ovviamente il messaggio di errore (per effetto del selectionchange). ciò che vorrei ottenere è che, premendo l’ok della finestra di messaggio, il cursore si riposizionasse dove era in precedenza in maniera da permettere all’utente di modificare il dato immesso erroneamente nella cella senza un ulteriore (ed inutile) messaggio di errore. grazie per i suggerimenti. fabio

    Ciao di Apoben64
    Se ho capito bene , il messaggio deriva da un'istruzione o un ciclo .
    quindi o riesci a postare una parte del codice o se no per riselezionare una cella puoi usare dopo msgbox :
    range("a1").select 'o la tua cella da ridigitare
    penso che non ti abbia dato la soluizione che cercacvi ma comunque se puoi riscirvi con maggiori dettagli .
    un saluto luca

    di Fabio22
    Ciao apoben!
    il problema è che non è prevedibile, in anticipo, in quale cella l’utente potrebbe inserire un dato non corretto.
    il codice che sto cercando dovrà essere tale che -- alla pressione del tasto ’ok’ della finestra che segnala l’errore -- l’utente venga rinviato alla cella (qualunque fosse stata) nella quale aveva digitato il dato erroneo. tutto ciò per consentirgli di ridigitare, senz’altro, il dato corretto.
    il problema sarebbe stato risolvibile con l’utilizzo di worksheet_change anzichè worksheet_selectionchange ma, purtroppo, le caratteristiche dell’applicazione non mi consentono questa modifica.
    a pensarci bene, molte applicazioni di uso corrente funzionano in modo tale che -- quando si inserisce in una cella un dato non contemplato dalla procedura -- si ha una segnalazione di errore fermo restando, almeno in apparenza, il punto di inserimento. nel caso non avessi espresso compiutamente il problema, fammi sapere. ciao --fabio

    di Mauro
    Ciao fabio, ti consiglio di usare l'evento worksheet_change al posto di worsheet_selectionchange, mentre selectionchange fa partire la routine ad ogni cambiamento di cella, con change è necessario variare il contenuto di una cella.

    di Mauro
    Scusa non avevo letto bene la tua risposta.
    prova questo nel modulo legato al foglio:

     
    Private indirizzo As String
    Private Sub Worksheet_Activate()
    indirizzo = ActiveCell.Address
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        MsgBox "indirizzo precedente: " & indirizzo
        ' svolgo la mia elaborazione poi salvo l'indirizzo
        indirizzo = ActiveCell.Address
    End Sub