› Sviluppare funzionalita su Microsoft Office con VBA › Conversione mese da stringa in numero
-
AutoreArticoli
-
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.
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 SubQual è 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 )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 SubProva con Switch. Naturalmente qualunque metodo funzionerà se a priori sai che scriverai sempre "Marzo", "Aprile", "Dicembre" e non, per esempio "Maggio", "giu", "sett 2019".
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.
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.
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 SubCioè occorre mettere uno spazio davanti al mese e passando il dato alla variabile Data non deve essere una stringa.
Fai sapere. Ciao,
Mario
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.
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
Ok Mario grazie a te.
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.
la corretta sintassi nell'applicare le istruzioni
Anche per questo esiste la Guida.
-
AutoreArticoli
