Login Registrati
Stai vedendo 13 articoli - dal 1 a 13 (di 13 totali)
  • Autore
    Articoli
  • #35291 Score: 0 | Risposta

    giulioc
    Partecipante

      Se fosse possibile nel mio file sarebbe facilitante che al passaggio del cursore la cella diventasse "   /   /      " cosi poi da inserire solo i numeri della data. Vi ringrazio della cortese attenzione.

      #35293 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        giulioc ha scritto:

        Se fosse possibile nel mio file sarebbe facilitante

        Quale file? Quello della discussione sul codice fiscale? Non è chiaro quello cui ti riferisci.

        Questa è una discussione nuova e diversa, se io la aprissi tra una settimana avrei perso qualsiasi riferimento alla discussione precedente. Comunque quello che chiedi si può fare con un formato personalizzato (##/##/####) ma in cella non compare il marcatore segnaposto.

        #35296 Score: 0 | Risposta

        giulioc
        Partecipante

          Scusami non l'ho scritto. Si riferisce alla precedente discussione, se possibile preferirei un codice vba. Distinti saluti.

          #35297 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Questo è il riferimento:

             Trovare il codice fiscale

            Con VBA si può fare ma non è semplicissimo e bisogna vedere se il gioco vale la candela. Magari dopo ci penso e vedo cosa si riesce a fare.

            #35316 Score: 0 | Risposta

            giulioc
            Partecipante

              Quindi questa richiesta è molto complicata?

              Serena giornata.

              #35317 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                giulioc ha scritto:

                Quindi questa richiesta è molto complicata?

                No dai non essere così pessimista 

                Allego file di esempio autoesplicativo.

                Allegati:
                You must be logged in to view attached files.
                #35319 Score: 0 | Risposta

                giulioc
                Partecipante

                  Buongiorno grazie del lavoro. Purtroppo alla riga - If Target = "" Then Exit Sub - mi da errore di overflow che non so risolvere.

                  Grazie dell'attenzione buona giornata.

                  #35320 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    E' strano perchè a me ieri dal mio pc (Excel 2013) non succedeva. Mentre qui in ufficio (Excel 2007) dà proprio errore di Overflow e non capisco il motivo.

                    Comunque ho risolto assegnando alla variabile s il valore Value2 del Target. Ecco il codice modificato che sostituisce il precedente, fai copia incolla nel codice del foglio interessato:

                    Option Explicit
                    
                    Private Sub Worksheet_Change(ByVal Target As Range)
                    Dim s As String
                    
                        If Intersect(Target, Range("input_text")) Is Nothing Then Exit Sub
                        s = Target.Value2
                        If s = "" Then Exit Sub
                    
                        If Not (s Like "[0-9][0-9][0-9][0-9][0-9][0-9]") And _
                            Not (s Like "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]") Then
                            Target.Select
                            MsgBox "La data inserita non è valida."
                            Target = ""
                            Exit Sub
                        End If
                        
                        Application.EnableEvents = False
                            If Len(s) = 6 Then
                                s = Left$(s, 2) & "/" & Mid$(s, 3, 2) & "/" & Right$(s, 2)
                            ElseIf Len(s) = 8 Then
                                s = Left$(s, 2) & "/" & Mid$(s, 3, 2) & "/" & Right$(s, 4)
                            End If
                            
                            Target = CDate(s)
                        Application.EnableEvents = True
                    End Sub
                    

                     

                     

                    #35321 Score: 0 | Risposta

                    giulioc
                    Partecipante

                      perfetto FUNZIONA. Ma ho un altro problema che ci sono 2 Private Sub Worksheet_Change(ByVal Target As Range) e vanno in conflitto c'è qualche soluzione?

                      Ti ringrazio della tua cortese attenzione.

                      #35322 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        Vanno in conflitto sì, perché deve esserci solo un evento che intercetta la modifica in una cella.

                        I due codici devono essere armonizzati e fatti coesistere, le istruzioni quindi vanno inserite in un unico evento Worksheet_Change in modo che non interferiscano tra loro (eliminando i doppioni, scegliendo le variabili in modo opportuno, e soprattutto disabilitando gli eventi all'ingresso della sub e riattivandoli all'uscita).

                        #35323 Score: 0 | Risposta

                        patel
                        Moderatore
                          51 pts

                          vecchio frac ha scritto:

                          Con VBA si può fare ma non è semplicissimo e bisogna vedere se il gioco vale la candela.

                          Giulio, sei certo che ne valga la pena per evitare di inserire 2 / ?

                          #35324 Score: 0 | Risposta

                          giulioc
                          Partecipante

                            Il problema del dato personalizzato ##"/"##"/"#### che devo calcolare l'età con data.diff ed ovviamente mi da errore, poi se utilizzo il filtro non mi raggruppa per anno o mese.

                            Ma diciamo che serve per risparmiare digitazione visto che ho molte date da inserire, comunque sto vedendo se si riesce a mettere i 2 / con una formula.

                            Vi ringrazio della cortese attenzione.

                            #35325 Score: 0 | Risposta

                            vecchio frac
                            Senior Moderator
                              272 pts

                              giulioc ha scritto:

                              ed ovviamente mi da errore

                              Dà errore perchè la stringa immessa nella cella (A4 del mio file di esempio) è solo visualizzata con gli slash ma internamente è considerata un unico testo. Se inserisci "10092022" viene visualizzato "10/09/2022" ma non è una data. Per fare quello che desideri devi trasformare questa stringa in un modo comprensibile a DATA.DIFF:

                              =DATA.DIFF(SINISTRA(A4;2)&"/"&STRINGA.ESTRAI(A4;3;2)&"/"&DESTRA(A4;4);OGGI();"D")

                              Naturalmente le cose vengono dette sempre a spizzichi e bocconi, per cui le soluzioni che si danno non possono essere né mirate né complete.
                              Ad ogni modo se utilizzi VBA puoi bypassare questo stratagemma e trattare le stringhe passate in argomento (la cella "Target") con maggior finezza rispetto a una formula.

                            Login Registrati
                            Stai vedendo 13 articoli - dal 1 a 13 (di 13 totali)
                            Rispondi a: data facilitata
                            Gli allegati sono permessi solo ad utenti REGISTRATI
                            Le tue informazioni: