Risultati da 1 a 17 di 17

Discussione: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)



  1. #1

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    54
    Messaggi
    10112
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2586
    Likes dati
    1555

    Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    E’ stato chiesto in più occasioni come fare per inserire in Excel la data e/o l’ora automaticamente e per tale scopo la formule utilizzate sono = OGGI() e = ADESSO().

    Queste formule presentano però l’inconveniente che col trascorrere del tempo modificheranno il risultato riportando la data e l’ora del momento.

    E’ assolutamente inutile aiurarsi con altre formule per cercare di bloccarle; bisogna rassegnarsi non è possibile farlo!

    Ecco allora che ci viene in aiuto il vba!

    Nell’esempio che vi propongo prevedo che inserendo dei dati nella colonna A si inseriscano in automatico il giorno nella colonna B e l’ora nella colonna C al momento dell’inserimento e restino fisse per sempre!

    Tra i vari modi ho scelto il seguente che vi propongo.

    Apro l’editor vbe e faccio doppio click nel foglio corrispondente a quello che voglio utilizzare per l’inserimento automatico dei giorni e delle ore.

    Scelgo l’evento Change con l’indirizzo di proprietà dell'oggetto Range (Target, che rappresenta un intervallo)

    Codice: 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Il metodo che si utilizza in questi caso è Intersect per verificare se un intervallo (Target in questo caso) interseca un intervallo denominato

    Codice:

    Codice: 
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim uRiga As Long
            uRiga = Range("A" & Rows.Count).End(xlUp).Row
                  If Not Intersect(Target, Range("A1" & ": A" & uRiga)) Is Nothing Then
                        Application.EnableEvents = False
                            Target.Offset(0, 1) = Date
                            Target.Offset(0, 2) = Format(Now, "hh:mm")
                        Application.EnableEvents = True
                 End If
    End Sub
    Codice commentato:

    Codice: 
    Private Sub Worksheet_Change (ByVal Target As Range)
      Dim uRiga As Long ‘Dichiaro le variabili
        uRiga = Range("A" & Rows.Count).End(xlUp).Row ‘ Trovo l’ultima riga piena della colonna A
           If Not Intersect(Target, Range("A1" & ": A" & uRiga)) Is Nothing Then ‘Se non si intersecano (Target, Range ( "A1: A"Ultima Riga)) è niente, allora…
             Application.EnableEvents = False 'disabilito gli eventi per evitare ricorsività dell'evento Change
                Target.Offset(0, 1) = Date ‘Partendo dalla colonna A (Target) scarto 1 colonna a destra per mettere la data nella colonna B
                Target.Offset(0, 2) = Format(Now, "hh:mm") ‘Partendo dalla colonna A (Target) scarto 2 colonne a destra per mettere l’ora nella colonna B (che formatto in “hh:mm”)
            Application.EnableEvents = True ' riabilito gli eventi
     End If
    End Sub
    Sull'evento Change
    Dal menu a tendina l'evento selezionabile contenente la parola "Change" è:
    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    L'evento "SelectionChange" si verifica quando si seleziona o si clicca su una cella diversa da quella attualmente selezionata, e quindi in pratica sempre, compreso un inserimento valore o modifica valore, perchè comunque si deseleziona la cella in questione per attivare la modifica, selezionandone un altra.

    L'evento "Change" si verifica invece quando si inserisce un valore o si effettua una modifica, premendo invio, altrimenti non si verifica.

    Su metodo Intersect
    Il metodo Intersect richiede che siano specificati due oggetti Range come argomenti.

    Il primo argomento inserito è l’oggetto Target e individua la cella o l’intervallo modificato, il secondo argomento è l’oggetto Range (poniamo per esempio il range (A1:A10)

    Per attivare l’evento si prevede che vi sia l'intersezione tra la cella modificata (Target) e il range (A1:A10) quindi se questi non si verifica (Is Nothing) non succede nulla.

    Il codice sarebbe così:

    Codice: 
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Intersect(Target, Range("A1")) Is Nothing Then
    Exit Sub
                Else  
    ……
    End Sub
    Per evitare il passaggi sopra si può scrivere con la negazione, così
    Codice: 
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
    ……
    End Sub
    File Allegati File Allegati
    Ultima modifica fatta da:ges; 31/07/16 alle 13:23 Motivo: Inserito gestione eventi
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  2. I seguenti 6 utenti hanno dato un "Like" a ges per questo post:


  3. #2
    L'avatar di Irclen
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    Quarrata
    Età
    49
    Messaggi
    165
    Versione Office
    Office2016
    Likes ricevuti
    5
    Likes dati
    7

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Ges, piacere mi è piaciuto ma ***** miseria se è complicato il VBA, sarà per l'inglese, ma l'ho letto e riletto e non ho immagazzinato niente. :( Mi sono arreso e ho fatto copia incolla della parte centrale, scusa se ti chiedo una cosa, ma va scritta tutta a mano?

  4. #3

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    54
    Messaggi
    10112
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2586
    Likes dati
    1555

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Ciao Irclen,
    non devi scriverlo a mano, basta che lo copi e lo incolli.

    L'importante è che lo incolli nel modulo di classe del foglio interessato.

    Nel mio caso nel Foglio1

    Apri l'editor vba e fai doppio click su Foglio1 e lo incolli nella finestra bianca che si apre.

    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  5. #4
    L'avatar di Irclen
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    Quarrata
    Età
    49
    Messaggi
    165
    Versione Office
    Office2016
    Likes ricevuti
    5
    Likes dati
    7

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Quello lo ho gia fatto, ma dicevo per crearlo il codice va scritto a mano apparte quello che l'editor VBA ti rende in automatico.

  6. #5

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    54
    Messaggi
    10112
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2586
    Likes dati
    1555

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Eh si, il codice va scritto a mano, non mi risulti vi sia un programma che in cui indicando gli obiettivi scriva il codice in automatico.

    Un metodo - molto utile - è usare il registratore di macro che registrando i passaggi che fai scrive il codice.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  7. #6
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    68
    Messaggi
    3638
    Versione Office
    2013 PC
    Likes ricevuti
    542
    Likes dati
    62

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Ciao Ges ottimo. Come al solito io cerco sempre le pulci

    Target.Offset(0, 2) = Format(Now, "hh:mm") ‘Partendo dalla colonna A (Target) scarto 2 colonne a destra per mettere l’ora nella colonna B (che formatto in “hh:mm”)


    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  8. #7

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    54
    Messaggi
    10112
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2586
    Likes dati
    1555

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Ciao Baloon,
    sempre un piacere leggerti.

    Questa che hai trovato però non è una pulce ( e nemmeno un pulcino ) si capisce benissimo che è semplicemente un refuso: due colonne a destra dopo la A è chiaramente la C (anche se ho scritto B).
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  9. #8

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    46
    Messaggi
    3532
    Versione Office
    Excel 2013
    Likes ricevuti
    1228
    Likes dati
    1303

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Ciao @ges, anch'io come @Baloon_50 (che saluto) cerco sempre le pulci ma la scrittura sul foglio genera un altro evento "Worksheet_Change" che è meglio disattivare con:
    Codice: 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim uRiga As Long
    
    
    uRiga = Range("A" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("A1" & ": A" & uRiga)) Is Nothing Then
        Application.EnableEvents = False
        Target.Offset(0, 1) = Date
        Target.Offset(0, 2) = Format(Now, "hh:mm")
        Application.EnableEvents = True
    End If
    End Sub

  10. #9

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    54
    Messaggi
    10112
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2586
    Likes dati
    1555

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Ciao Rubik,
    forse ti è sfuggito che h'o già fatta questa modifica; nel primo post, leggi "Ultima modifica fatta da:ges; 31/07/16 alle 13:23 Motivo: Inserito gestione eventi"
    Comunque, grazie lo stesso per la segnalazione.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  11. #10
    L'avatar di giansort
    Clicca e Apri
    Data Registrazione
    Sep 2017
    Località
    Milano, Italia
    Messaggi
    93
    Versione Office
    office 2016
    Likes ricevuti
    1

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Ciao a tutti,
    come sempre siete veramente bravi, ho trovato in questo articolo quello che da giorni cercavo su internet per bloccare data e ora.
    ora mi và benissimo così e mi risolve un problema(sto cercando di creare un foglio per la popolazione dei cartellini delle giornate lavorative per la ditta), però nella casella dell'ora mi restituisce non l'ora del sistema ma 13/01/1900 09.07.12 (l'ora del sistema era 13:42)
    la data la popola giusta 17/12/2017.
    vi allego il file in cui sto lavorando
    grazie in anticipo per la vs risposta
    Continuate così
    File Allegati File Allegati

  12. #11
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    982
    Versione Office
    2016 64bit
    Likes ricevuti
    182
    Likes dati
    92

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Ho provato la tua macro e non ho trovato criticità. La macro provvede autonomamente a formattare correttamente la cella con questa riga di codce:

    Target.Offset(0, 2) = Format(Now, "hh:mm")

  13. I seguenti utenti hanno dato un "Like"


  14. #12
    L'avatar di giansort
    Clicca e Apri
    Data Registrazione
    Sep 2017
    Località
    Milano, Italia
    Messaggi
    93
    Versione Office
    office 2016
    Likes ricevuti
    1

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    grazie ora è corretto ma quando ho scritto mi usciva quell'ora
    Buona Continuazione

  15. #13
    L'avatar di bustergio
    Clicca e Apri
    Data Registrazione
    Jan 2018
    Località
    modena
    Messaggi
    33
    Versione Office
    10
    Likes ricevuti
    1

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Grazie mille Ges per il tutorial.
    Ho studiato il tuo codice e credo di aver compreso il principio. L'ho riadattato al mio foglio e funziona perfettamente, senonché quando copio una riga di dati. Per spiegarmi meglio allego il tuo file adattato: se scrivo normalmente nella colonna A tutto funziona e trovo data e orario nelle celle giuste (Riga 2). Se invece incollo una riga di dati (Riga 3) il tutto si propaga per tante colonne quante sono quelle incollate. Mi ci sono applicato, ma non sono riuscito a limitare la scrittura alle due celle predefinite.
    E' possibile risolvere?

    Grazie infinite
    Bustergio
    File Allegati File Allegati

  16. #14
    L'avatar di bustergio
    Clicca e Apri
    Data Registrazione
    Jan 2018
    Località
    modena
    Messaggi
    33
    Versione Office
    10
    Likes ricevuti
    1

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Ho fatto un po' di progressi. Partendo dall'ottimo tutorial, leggendo altri post e qualche guida sono arrivato a scrivere qualcosa di buono: cambiando di valore la cella nella colonna A nella colonna H viene scritto l'anno in automatico, che è cio' che mi serve (potrebbe essere la data, l'ora.. ecc ). Adesso mi sono incagliato in questo: visto che nel foglio vengono importati anche blocchi di dati con un copia/incolla, vorrei che la scrittura dell'anno avvenisse su tutte le righe e non soltanto sulla prima. Allego file esplicativo.
    Avete un'idea?

    Grazie... e continuo a studiare!
    Bustergio
    File Allegati File Allegati

  17. #15

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    9812
    Versione Office
    2013
    Likes ricevuti
    1017
    Likes dati
    274

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Bustergio questa sezione è dedicata ai tutorial sul VBA.

    Se hai problemi/quesiti devi aprire specifica discussione nella sezione "Domande su Excel VBA e macro".
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"

    "Solo due cose sono infinite: l'universo e la stupidità umana; riguardo l'universo ho ancora dei dubbi" (Albert Einstein)

  18. #16
    L'avatar di bustergio
    Clicca e Apri
    Data Registrazione
    Jan 2018
    Località
    modena
    Messaggi
    33
    Versione Office
    10
    Likes ricevuti
    1

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Buonasera alfrimpa,
    chiedo venia. Non era mia intenzione voler infrangere alcuna regola. Ho visto che altri hanno, a suo tempo, replicato e credevo fosse inutile creare un altro thread e fosse più utile tenere concentrate le varie esperienze e allargare lo spettro delle soluzioni.
    Ho sbagliato e chiedo scusa. Se non trovo soluzione da solo aprirò una nuova discussione

    Grazie mille
    Bustergio

  19. #17

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    9812
    Versione Office
    2013
    Likes ricevuti
    1017
    Likes dati
    274

    Re: Inserire data e ora in automatico che rimangono fisse (Evento Change e metodo Intersect)

    Ma no Bustergio non devi scusarti di nulla.

    Essendo questa sezione molto meno "visitata" delle altre la richiesta ne perde fatalmente di visibilità e conseguentemente le possibilità di riisposte si abbassano.

    Solo per questo motivo ho consigliato di aprire una discussione in "VBA e macro".
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"

    "Solo due cose sono infinite: l'universo e la stupidità umana; riguardo l'universo ho ancora dei dubbi" (Albert Einstein)

Discussioni Simili

  1. Copia incolla automatico o metodo per velocizzare l'estrazione di dati
    Di luctsi nel forum Domande su Excel in generale
    Risposte: 19
    Ultimo Messaggio: 14/07/17, 13:31
  2. Workshetet Change
    Di CESARE2017 nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 27/06/17, 09:43
  3. [Risolto] Come inserire i colori in automatico
    Di ferroza nel forum Domande su Excel in generale
    Risposte: 27
    Ultimo Messaggio: 13/12/16, 00:43
  4. Inserire data odierna o un'altra data.
    Di Laura Belli nel forum Domande su Excel VBA e MACRO
    Risposte: 17
    Ultimo Messaggio: 02/09/16, 08:16
  5. Inserire nuovi valori in automatico
    Di great-tech nel forum Foglio di calcolo su altre Piattaforme
    Risposte: 1
    Ultimo Messaggio: 03/04/16, 09:32

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •