Sviluppare funzionalita su Microsoft Office con VBA Incremento del numero dell'anno in una data

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

    Semiuccio
    Partecipante
      1 pt

      Ciao a tutti.

      nell'esempio che allego voglio incrementare la data delle celle che corrispondono ad un determinato anno, aumentandone l'anno in una unità. Ad esempio l'anno 2024 cambiarlo in 2025.

      Ho però un errore "necessario oggetto".

      Quale è il problema?

      Grazie

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

      alexps81
      Moderatore
        58 pts

        Ciao, prova così:

        Option Explicit
        
        Sub IncrementaAnno()
            Dim anno As Variant, nuovaData As Date
            Dim cella As Range
            Dim ur As Long
            Dim edit As Boolean
            
            anno = Application.InputBox("QUALE ANNO VUOI INCREMENTARE?", "Incrementa anno", Type:=1)
            If anno <> False Then
                ur = Sheets("SPESE RICORRENTI").Cells(Rows.Count, "A").End(xlUp).Row
                For Each cella In Sheets("SPESE RICORRENTI").Range("A2:A" & ur)
                    If Year(cella) = anno Then
                        nuovaData = DateSerial(anno + 1, Month(cella), Day(cella))
                        cella.Value = nuovaData
                        edit = True
                    End If
                Next cella
                If edit Then
                    MsgBox ("OPERAZIONE ULTIMATA"), vbInformation
                Else
                    MsgBox "Non ci sono date da poter incrementare l'anno", vbExclamation
                End If
            End If
        End Sub

        P.S. per le prossime volte pubblica anche il codice perché chi vuole aiutarti e legge da smartphone non può aprire il file e leggere il codice.

        #52176 Score: 0 | Risposta

        Semiuccio
        Partecipante
          1 pt

          Grazie Alex. Funziona bene. E grazie anche per la dritta di pubblicare anche in codice. Lo farò le prossime volte.

          Ciao

          #52180 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Semiuccio ha scritto:

            Ho però un errore "necessario oggetto".

            Quale è il problema?

            Io invece vorrei rispondere alla domanda, per quanto sia superfluo dal momento che Alex ha gia' fornito la soluzione al problema. La soluzione data risolve, ma perche'?

            Perche' non puoi assegnare un valore alla funzione Year, la quale restituisce un valore.

            Nel tuo codice originale l'istruzione:

            If Year(cella) = anno Then Year(cella) = anno + 1

            produce l'errore che hai riportato e che ti dice che non e' consentito assegnare un valore all'oggetto (la funzione Year non e' un'istruzione di assegnazione).
            In generale le funzioni come questa restituiscono un valore (pensiamo anche a Left$, Right$, InStr) ma non e' possibile assegnarglielo. Un'eccezione la offre Mid$, che agisce sia come funzione che come istruzione:
            - Mid$("pippo", 2, 1)     ----> "i" (restituisce il secondo carattere di "pippo")
            - a$="pippo" : Mid$(a$, 2, 1) = "x"     ----> a$ = "pxppo" (imposta il secondo carattere di a$, che vale "pippo", a "x")

            #52281 Score: 0 | Risposta

            Semiuccio
            Partecipante
              1 pt

              Grazie Vecchio Frac. Grazie per la spiegazione chiara.   

              #52995 Score: 0 | Risposta

              LukeReds
              Partecipante
                19 pts

                ciao 

                con le date in colonna A e la data di cui incementare l'anno in E2  (no inputbox)

                 

                `Sub IncremAnnoScelto()
                Dim r As Integer
                r = Range("A" & Rows.Count).End(xlUp).Row
                Range("A2:A" & r).Replace What:=Range("E2"), Replacement:=Range("E2") + 1
                End Sub`
              Login Registrati
              Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
              Rispondi a: Incremento del numero dell'anno in una data
              Gli allegati sono permessi solo ad utenti REGISTRATI
              Le tue informazioni: