Sviluppare funzionalita su Microsoft Office con VBA Conversione mese da stringa in numero

LoginRegistrati
Stai vedendo 12 articoli - dal 1 a 12 (di 12 totali)
  • Autore
    Articoli
  • #15064 Risposta

    mariome
    Partecipante
    • qwerty

      Salve, ho il nome del mese in una variabile e lo vorrei trasformare in un numero intero: Marzo --> 3. Escludendo l'utilizzo del Select Case . Grazie.

      #15065 Risposta
      alfrimpa
      alfrimpa
      Partecipante
        13 pts

        In formule se il mese è in A1 basta

        =MESE(1&A1)

        che puoi tradurre facilmente in VBA.

        Alfredo

        #15069 Risposta
        albatros54
        albatros54
        Moderatore
          36 pts

          Non sapendo come viene inizializzata la tua variabile nel tuo codice, ti posto queste due righe di codice, senza select case, da dove puoi prendere lo spunto

          Option Base 1
          Option Explicit
          Sub m()
              Dim ar As Variant
              Dim mese As Variant
              Dim a As Integer
              ar = Array("marzo", "aprile", "gennaio")
              mese = LCase(InputBox("mese"))
              For a = LBound(ar) To UBound(ar)
                  If ar(a) = mese Then
                      MsgBox ("la variabile mese è uguale ha  " & mese)
                      mese = a
                      MsgBox ("la variabile mese ora è uguale ha  " & mese)
                  End If
              Next
          End Sub

           

          Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
          Sempre il mare, uomo libero, amerai!
          ( Charles Baudelaire )
          #15070 Risposta

          mariome
          Partecipante
          • qwerty

            Ok Alfredo, io però ho il mese sottoforma di variabile e vorrei inserirlo in un'altra variabile. Ho provato con la funzione Month ma non riesco a saltarci fuori. 

            Ho provato con quessto codice ma se la variabile Mese non è sotto forma di data l' istruzione Month non l'accetta

            Sub ProvaMese()
             Dim Mese, N, Data
             Mese = "Marzo"
             Data = "1& Mese"
             N = Month(Data)
             MsgBox N
            End Sub
            #15073 Risposta

            vecchio frac
            Senior Moderator
            • Sfida #1
              145 pts

              Prova con Switch. Naturalmente qualunque metodo funzionerà se a priori sai che scriverai sempre "Marzo", "Aprile", "Dicembre" e non, per esempio "Maggio", "giu", "sett 2019".

              #15079 Risposta

              mariome
              Partecipante
              • qwerty

                mariome ha scritto:

                Ok Alfredo, io però ho il mese sottoforma di variabile e vorrei inserirlo in un'altra variabile. Ho provato con la funzione Month ma non riesco a saltarci fuori. 

                Ok Albatros54, grazie, questo è un ottimo trucco per evitare la select case, andrebbe anche bene. Io perè sto cercando il modo (se c'è) di trasformare la stringa col nome del mese (prelevato da un pulsante col nome del mese attraverso application.caller) nel numero corrispondente direttamente attraverso una istruzione tipo Month. 

                #15080 Risposta

                mariome
                Partecipante
                • qwerty

                  Ok vecchiofrac, grazie, però mi pare che funzioni come la select case. che nel mio caso andrebbe anch'essa bene, cercavo però una soluzione meno ridondante che prendesse la stringa  mese e la trasformasse direttamente in numero.

                  #15081 Risposta
                  Marius44
                  Marius44
                  Moderatore
                  • Sfida #4
                    10 pts

                    Ciao a tutti

                    Scusate l'intromissione ma credo che ci sia un piccolo errore nella macro al post #15070

                    Corretta come sotto a me funziona

                    Sub ProvaMese()
                     Dim Mese, N, Data
                     Mese = " Marzo"
                     Data = 1 & Mese
                     N = Month(Data)
                     MsgBox N
                    End Sub

                    Cioè occorre mettere uno spazio davanti al mese e passando il dato alla variabile Data non deve essere una stringa.

                    Fai sapere. Ciao,

                    Mario

                    #15094 Risposta

                    mariome
                    Partecipante
                    • qwerty

                      Perfetto, grazie mille Mario.  Uno dei miei infiniti limiti è proprio l'assegnazione del tipo alle variabili. Lo stesso dicasi per la corretta sintassi nell'applicare le istruzioni. Ancora grazie per l'attenzione e la considerazione.

                      #15098 Risposta
                      Marius44
                      Marius44
                      Moderatore
                      • Sfida #4
                        10 pts

                        Ciao

                        Grazie per il cortese, positivo riscontro.

                        Permettimi un consiglio:

                        in futuro nei tuoi programmi metti sempre in testa ad ogni Modulo del VBA la dicitura Option Explicit

                        ti costringerà a dichiarare le variabili e si blocca se una variabile dichiarata Long riceve un dato String.

                        Ciao,

                        Mario 

                        #15102 Risposta

                        mariome

                          Ok Mario grazie a te.

                          #15111 Risposta

                          vecchio frac
                          Senior Moderator
                          • Sfida #1
                            145 pts

                            mariome ha scritto:

                            l'assegnazione del tipo alle variabili.

                            Perchè? Qual è la difficoltà? Se maneggi testo, la variabile è di tipo String. Se maneggi numeri fino a 256, di tipo Byte, da -32767 a +32767 di tipo Integer, poi ci sono i Long, i Single, i Double... la Guida è chiara.

                            mariome ha scritto:

                            la corretta sintassi nell'applicare le istruzioni

                            Anche per questo esiste la Guida.

                          LoginRegistrati
                          Stai vedendo 12 articoli - dal 1 a 12 (di 12 totali)
                          Rispondi a: Conversione mese da stringa in numero
                          Gli allegati sono permessi solo ad utenti REGISTRATI
                          Le tue informazioni:



                          vecchio frac - 2137 risposte

                          albatros54
                          albatros54 - 650 risposte

                          patel
                          patel - 510 risposte

                          Marius44
                          Marius44 - 409 risposte

                          Luca73
                          Luca73 - 373 risposte