calendario in cella excel

Anonimo
2016-07-09T09:08:59+00:00

ciao a tutti

vorrei velocizzare l'immissione di date in un foglio di excel e ho pensato a 2 soluzioni:

  • al posto di scrivere 09/07/2016 vorrei scrivere 09072016 e il programma dovrebbe in automatico riconoscere la data.
  • quando una cella è selezionata, combinazione di tasti e che compaia un calendario da cui scegliere una data.

cosa mi suggerite?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-07-17T06:52:18+00:00

Ma stai seguendo la procedura qui sotto(in inglese)?

E, come ti è già stato consigliato, c'è anche questo:

o la semplice, banale UserForm proposta nel mio (lontano....) primo post:

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-07-09T14:07:29+00:00

Ciao gtsolid,

vorrei velocizzare l'immissione di date in un foglio di excel e ho pensato a 2 soluzioni:

  • al posto di scrivere 09/07/2016 vorrei scrivere 09072016 e il programma dovrebbe in automatico riconoscere la data.
  • quando una cella è selezionata, combinazione di tasti e che compaia un calendario da cui scegliere una data.

cosa mi suggerite? 

Ti sconsiglio il primo approccio.

Prova ad inserire un controllo calendario, dai controlli ActiveX, sul foglio e nel modulo di codice del foglio. incolla il segente codice:

'=========>>

Option Explicit

'--------->>

Private Sub Calendar1_Click()

    With ActiveCell

        .Value = CDbl(Calendar1.Value)

        .NumberFormat = "mm/dd/yyyy"

        .Select

    End With

End Sub

'--------->>

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Rng As Range

    Const mioIntervallo As String = "A1:A30"                 '<<=== Modifica

    If Target.Cells.Count > 1 Then

        Exit Sub

    End If

    Set Rng = Me.Range(mioIntervallo)

    With Calendar1

        If Not Application.Intersect(Rng, Target) Is Nothing Then

            .Left = Target.Left + Target.Width - Calendar1.Width

            .Top = Target.Top + Target.Height

            .Visible = True

            .Value = Date

        ElseIf .Visible Then

            .Visible = False

        End If

    End With

End Sub

'<<=========

Cliccando sulla cella (diciamo) A10, se vedrebbe qualcosa del genere:

![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=c2e409c7-200a-41c8-8d08-98857732e1d2)

Potresti scaricare il mio file di esempio Gtsolid20160709.xlsm a:

https://www.dropbox.com/s/69cio917kh4twrm/Gtsolid20160709.xlsm?dl=0

===

Regards,

Norman

![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=080b1f2a-fb91-4e40-90d5-86aa09f2e296)

La risposta è stata utile?

0 commenti Nessun commento

52 risposte aggiuntive

Ordina per: Più recente
  1. Anonimo
    2016-07-10T12:08:58+00:00

    Ciao Mauro,

    sempre per pura discussione il problema da te sollevato è però diverso e cioè l'aver indicato una data diversa da quella che invece avresti dovuto inserire.

    Ma questo può accadere anche inserendo una data in formato normale o utilizzando la form (anche se forse l'attenzione che richiederebbe nel scegliere giorno mese e anno renderebbe meno probabile l'evento).

    Devo inserire 02/05/2016 e invece inserisco 03/05/2016. Ho sbagliato a inserire data e probabilmente nessun controllo può accorgersene (o meglio potrei fare un controllo che non sia una data precedente ad una data successiva eventualmente inserita come avviene sempre ad es. nelle date di registrazione dei programmi contabili) se non una successiva verifica di cosa sono andato ad inserire.

    Ma, se guardiamo al problema dell'utente nello specifico, cioé il velocizzare l'inserimento delle date probabilmente l'inserimento in formato tradizionale, soprattutto se le date sono tante  e magari in mesi differenti se non in anni, richiederebbe minor tempo rispetto all'inserimento con userform o tramite il calendario (e non risolverebbe del tutto il problema di inserire una data piuttosto che un'altra).

    Comunque guardando l'esempio della userform forse mi è venuta in mente un'idea per controllare almeno il numero di giorni superiore a quello ammesso per un mese :-)

    Visto che oggi niente mare vedo se riesco a cavare un minuscolo ragnetto dal buco (anche perché a dire il vero con le date non sono mai stato bravissimo :D )

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-07-10T11:49:42+00:00

    La questione delle date NON è risolvibile al 100% nella cella, almeno a mio modesto avviso.

    L'utente deve inserire la data 2/5/16. Nella cella scrive 3/5/16, invio. E poi prosegue. La data è valida ma sbagliata. Il 3 è vicino al 2 e può succedere. Diverso è se tu utilizzi un controllo. DEVI selezionare il valore e l'attenzione è diversa.

    Se hai dato un'occhiatina qui:

    Vedi la base per implementare qualcosa che dia più possibilità di scelta, anche di formati NON localizzati modificandola un po'. Sempre responsabile IT permettendo.... ;-)

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-07-10T10:41:17+00:00

    Ciao Norman,

    con la mia procedura occorre darsi una regola (come ad es. avviene con i software che utilizzo per contabilità e dichiarazioni) in caso di inserimento della data non con la modalità classica.

    Questo è un presupposto iniziale.

    L'utente se vuole poter inserire le date in maniera "semplificata" (senza le barre) deve accettare di tenere un dato comportamento.

    E la regola, in questa ipotesi, sarebbe che SE le date vengono inserite non in maniera classica debbano essere inserite digitando obbligatoriamente o "ggmmaa" oppure "ggmmaaaa".

    Quindi l'utente saprebbe che solo quelle inserite con quelle modalità sono date valide. Si tratta di decidere se accettare o meno la regola.

    Se la si accetta si sa che una data inserita 1216 (che se inserita con le barre in Excel rappresenterebbe una data valida) NON è una data valida per questa modalità di inserimento.

    Altra regola da accettare sarebbe appunto la formattazione come testo delle celle che contengono le date (da qui la mia domanda inziale in quanto se non fosse accettabile questa cosa ovviamente si dovrebbe rinunciare a monte alla procedura).

    Per quanto riguarda la data voluta, nel formato desiderato, a quel punto si cambia il formato data.

    Ad es. se imposto Format(CDate(Data), "d/m/yy") nella cella la data viene inserita come 1/1/16.

    Se impost Format(CDate(Data), "d/mm/yy") nella cella la data viene inserita come 1/01/2016.

    Anche qui si tratta di decidere come si vuole che venga visualizzata la data (ma questo lo si farebbe anche in caso di inserimento classico delle date).

    Una volta che eventualmente sia stata accettata la regola che l'utente non può fare tutto ciò che vuole, ma deve tenere un determinato comportamento di inserimento, il vero problema, come dicevo, è quello del "riconoscimento automatico" che excel fa delle date in formato americano.

    Ad es. ho impostato la condizione Year(Data) >= AnnoLimite che consente l'inserimento di date successive nell'esempio al 2010.

    Ecco che se inserisco, per errore, 290215 la procedura dovrebbe segnalarmi errore perché non esiste il 29 febbraio 2015 ma excel invece la converte in data americana e quindi viene inserita la data 15/02/2029.

    Se la condizione fosse limitata ad un dato anno (es. Year(Data) = 2015) il problema verrebbe risolto dal controllo sull'anno che non troverebbe corrispondenza con l'anno di riferimento.

    Questo aspetto lo considero un grosso limite ma se ad es. dovessi utilizzare la procedura per un programma di fatturazione dove l'anno delle date delle fatture deve essere quello dell'anno di riferimento ecco che il problema viene evitato.

    Lo stesso se dovessi inserire dei movimenti di registrazione (ad es. contabilità) per i quali la data deve essere comunque compresa in un determinato anno di riferimento.

    Mi chiedevo se non ci fosse un modo per impostare in Excel che le date vengano riconosciute come tali in base ad un particolare metodo (americano o italiano, come ad esempio viene fatto in alcune funzioni per decidere le differenze tra date come ad es. in GIORNO360).

    ciao

    La risposta è stata utile?

    0 commenti Nessun commento