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ù utili
  1. Anonimo
    2016-07-11T10:10:14+00:00

    Ribadisco: ... o indichi all'utente come inserire direttamente le date nelle celle.

    E non è quello che viene fatto?

    Quando dico che nelle celle deve inserire o ddmmyy o ddmmyyyy o dd/mm/yy o dd/mm/yyyy non gli dico come le deve inserire direttamente nelle celle (o in un TextBox di una maschera)? :-)

    Sul senso pratico quando inserisci decine e decine di date consecutivamente il vantaggio c'è.

    Te lo posso dire per esperienza personale ;-)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-07-11T10:04:12+00:00

    Ribadisco: o proponi una maschera, o indichi all'utente come inserire direttamente le date nelle celle.

    Tutto il resto non ha nessun senso pratico.

    10122016 o 10-12-16 (o 10/12/16) chiedono entrambi 8 inserimenti. Anzi 1-1-16 (o 1/1/16) ne richiede 6 ed è già pronto e senza errori o funzioni. Se poi l'utente sbaglia un 3 con un 6.....

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-07-11T09:57:47+00:00

    E perché non gmaaaa. Se è breve(l'immissione) che sia breve... ;-)

    Le date non sono una cosa semplice da gestire. Devi dare all'utente qualcosa di chiaro per inserirle correttamente nel formato che vuoi tu

    Esatto è la regola è che se si vuole fare l'inserimento "breve", cioé senza le barre, le modalità di inserimento sono solo due:

    inserimento in modalità ddmmyy o in modalità ddmmyyyy (altrimenti inserisci le date in modalità standard).

    Proprio perché la gestione delle date non è cosa semplice vanno fatte delle scelte.

    Fai l'esempio di 132016 (dmyyyy).

    Il codice che dovesse convertire in data questa stringa di valori cosa dovrebbe fare?

    Iniziare ad analizzare la data come se fosse ddmmyy verificando che non è una data valida (13/20/16).

    Allora analizzare in maniera differente considerando dmyyyy. Ok è una data valida.

    Quindi significa un'altra opzione.

    Ma allora perché non 1316 (quattro caratteri)? Significa un'altra opzione.

    Nel mio caso la regola è data. Se inserisci 132016 restituisco un errore e di dico che la data va inserita in quella modalità (ora nello specifico nel messaggio non è indicato ma ben potrebbe aversi un msgbox con indicato quali formati utilizzare).

    Per farti un esempio il programma utilizzato per la contabilità consente solo 4 tipi di inerimento

    ddmmyy, ddmmyyyy, dd/mm/yy, dd/mm/yyyy. Non sono ammesse altri tipi di inerimento

    Ecco che come dici queste sono le regole che sono state imposte per l'inserimento.

    Se inserisco 1/1/2016 (che volendo potrebbe essere considerata una data valida andando ad estrapolare i valori compresi tra le barre) mi viene segnalato data non valida (evidentemente i programmatori hanno deciso di leggere 8 caratteri e considerare i primi due "1/" per gg "1/" per mm e "2016" per yyyy e poiché non è una data valida avvisa che non è stata inserita nel modo che loro voglio).

    Si tratta di stabilire come vanno inserite le date e, nel caso specifico, viene fatto (ho indicato le condizioni, come quella che la cella sia formattata come testo perché altrimenti excel elimina lo 0 iniziale).

    Per quanto riguarda la richiesta iniziale di una tale modalità di inserimento personalmente la capisco.

    Ti posso assicurare che alla lunga inserire 010116 piuttosto che 01/01/16 comporta una riduzione di tempo e soprattutto una minore probabilità di inserire una data non valida (a prescindere che sia la data corretta da inserire che è altro problema perché anche con un calendario potrei cliccare sul 03/05/2016 invece che sul 02/05/2016). Le dita rimangono sempre nell'ambito dei numeri del tasterino. Già spostarsi sulla barra rappresenta una "interruzione" del movimento delle dita.

    Così come posso dirti che alla fin fine l'inserimento "ddmmyy" diventa un inserimento anche più naturale di "dmyy" o "dmmyy" o "ddmyy".

    Diventa automatico considerare sempre il giorno e il mese composto da due caratteri.

    Mentalmente diventa la "regola" e altre modalità diventano eccezioni "non naturali" e le dita si muovono in automatico in tale modalità. La mente tende a standardizzare più di quanto si pensi. Ma questa è altra questione :-)

    Da qui, ai tempi, l'idea di replicare la cosa anche se alla fine utilizzato solo per un mio file.

    Con l'occasione ho provato a implemetare e, fissate le regole, mi pare che il funzionamento sia coerente.

    Poi ovvio che nell'utilizzo sul foglio occorrerebbe valutare se l'inserimento in celle in formato testo sia fattibile o meno.

    Nel caso di utilizzo di Userform e di relativi TextBox, che comunque restituirebbero una stringa di testo da convertire in data, potrebbe avere un senso consetire l'inserimento in modo ddmmyy o ddmmyyyy (per poter gestire in maniera più "evidente" l'anno senza affidarsi a "conversione" in base a "convenzione").

    La risposta è stata utile?

    0 commenti Nessun commento