Link sponsorizzati

Funzioni avanzate del linguaggio VBA

Siamo arrivati ad argomentare le Funzioni avanzate del linguaggio VBA.

In alcuni esempi, dove è stato spiegato l'uso del ciclo Do..Loop, implicitamente si è fatto cenno alle modalità di acquisizione e visualizzazioni delle informazioni. Stiamo parlando di:

  1. Uso di Msgbox come funzione o istruzione;
  2. Uso dell'istruzione InputBox;
Diamo la sintassi di MsgBox come istruzione:
L'istruzione Msgbox presenta i seguenti argomenti:
  1. Prompt - Messaggio testuale che compare all'interno della finestra di dialogo;
  2. Costante di MsgBoxStyle;
  3. Title per impostare un titolo per la finestra di dialogo;
  4. Help e Context per impostare un file di guida e un indice per accedere velocemente all'argomento interessato al suo interno. Sarà visualizzato un pulsante con un "punto di domanda"
La sintassi di Msgbox, come funzione, è la seguente:
Utilizzando l'istruzione Msgbox come funzione, essa restituirà un valore corrispondente ad una delle seguenti costanti intrinseche:

Costanti enumerative di MsgboxResult Descrizione
VbAbort Costante uguale al valore 3; viene utilizzata, quando nella finestra di dialogo MsgBox si utilizza la costante VbAbortRetryIgnore per l'argomento MsgBoxStyle
VbCancel Costante uguale al valore 2; viene utilizzata, quando nella finestra di dialogo Msgbox si utilizza la costante VbOKCancel per l'argomento MsgboxStyle
VbIgnore Costante uguale al valore 5; viene utilizzata, quando nella finestra di dialogo Msgbox si utilizza la costante VbAbortRetryIgnore per l'argomento MsgboxStyle
VbNo Costante uguale al valore 7; viene utilizzata, quando nella finestra di dialogo Msgbox si utilizza la costante VbYesNo o VbYesNoCancel per l'argomento MsgboxStyle
VbOk Costante uguale al valore 1; viene utilizzata, quando nella finestra di dialogo Msgbox si utilizza la costante VBOkOnly oppure VBOKCancel per l'argomento MsgBoxStyle
VbRetry Costante uguale al valore 4; viene utilizza, quando nella finestra di dialogo Msgbox si utilizza la costante VbAbortRetryIgnore per l'argomento MsgboxStyle
VbYes Costante uguale al valore 6; viene utilizzata, quando nella finestra di dialogo Msgbox si utilizza la costante VbYesNo oppure VbYesNoCancel per l'argomento MsgboxStyle

Esempio:
Dim R as MsgboxResult
r=Msgbox("Vuoi continuare S/N:",VbYesNo,"Messaggio")
If r=VbYes Then
    Msgbox("Hai deciso di continuare")
Else
    Msgbox("Stai per uscire dall'applicazione")
End If
Le informazioni prima di essere visualizzate vanno acquisite e successivamente elaborate. L'istruzione che permette di acquisire informazioni da parte dell'utente è InputBox.

Gli argomenti di questa istruzione sono:
  1. Prompt - Argomento di tipo stringa per visualizzare un messaggio; esso compare nella finestra di dialogo;
  2. Title - Titolo assegnato alla finestra di dialogo;
  3. Default - Valore predefinito che compare nella casella di inserimento;
  4. Coordinate (PosX e PosY per la posizione di tale finestra sullo schermo);
  5. HelpFile e Context già spiegati nella sintassi dell'istruzione MsgBox.
Esempio:
Public a As Integer
Public b as Integer
Function Addizione()
    Addizione=A+b
End Function
Sub Main
    Dim S as Integer
    a=Inputbox("Valore di a=","Immetti A")
    b=Inputbox("Valore di b=","Immetti B")
    s=Addizione()
    Msgbox("Risultato A+B" & s)
End Sub
Eseguiamo con il tasto F8 la routine Main:

Immettiamo il primo valore:

Immettiamo il secondo valore:
Confermando il pulsante Ok all'interno della seconda casella di inserimento, sarà eseguita la funzione Addizione. Essa restituirà un valore e sarà assegnato alla variabile s.Ecco visualizzato il messaggio di risultato:
Introduciamo le funzioni avanzate di conversione dei tipi di dati.

All'interno dell'Editor di Visual Basic premiamo il Tasto di funzione F2, e notiamo che le funzioni di conversione fanno parte della libreria VBA:
Rappresentiamo una tabella, che permette di comprendere questo: ad ogni tipo di dato elementare corrisponde una funzione di conversione:

Funzioni conversione Tipo dato
Cbool Boolean
Cbyte Byte
CCur Currency
CDate Date
CDbl Double
CDec Decimal
CInt Integer
CLng Long
CSng Single
CStr String
CVar Variant

Esempio: Proviamo a convertire "casa" in Csng:

Dim s As String
dim dato as Single
s="Casa"
dato=Csng(s)
Queste righe di codice genereranno un errore durante l'esecuzione del codice:
Dovessimo premere il pulsante di domanda, nel messaggio di errore visualizzato, verrà visualizzato l'argomento associato per i dettagli dell'errore intercettato.

Nella gestione di dati di tipo stringa, l'operazione applicata a questa tipologia di dato è denominata Manipolazione delle stringhe. Per manipolare le stringhe abbiamo un set di funzioni, catalogate nella classe STRINGS, della libreria VBA:

Attraverso queste funzioni potremmo svolgere svariate operazioni, tipo:
  1. Conoscere la lunghezza dei caratteri di una stringa funzione Len;
  2. Convertire in Maiuscolo o in Minuscolo una stringa funzione UCASE e LCASE;
  3. Ottenere una stringa eliminando gli spazi iniziali o finali di una determinata stringa Ltrim Rtrim;
  4. Restituire un certo numero di caratteri da una stringa partendo da destra funzione Right;
  5. Restituire un certo numero di caratteri da una stringa partendo da sinistra funzione Left;
  6. Restituire a lettere il mese partendo da un numero compreso tra 1 e 12 funzione MonthName;
  7. Restituire a lettere il giorno della settimana partendo da un numero compreso tra 1 e 7 funzione WeekDayName;
e tanti altri utilizzi, leggendo attentamente la guida in linea, accessibile dall'Editor di Visual Basic, oppure attendendo una guida avanzata di VBA su mrwebmaster.it.

Una classe della libreria VBA è dedicata alla manipolazione delle date Un valore di tipo Date viene così memorizzato:

Dim miadata as Date
d=#12/22/2006 17:36PM#
Quando memorizza una data con le istruzioni di assegnazione, essa viene racchiusa da due cancelletti. Viene indicato prima il giorno e poi il mese, seguendo le notazioni standard dei paesi anglosassoni.

Ecco le funzioni che permettono la manipolazione delle date. Le presentiamo direttamente dal visualizzatore degli Oggetti (Tasto di funzione F2 all'interno dell'Editor VB).

La data di sistema viene recuperata in questo modo:
Dim datasistema as Date
datasistema=Date()
Msgbox(datasistema)
Per recuperare la data comprensiva anche dell'orario useremo la funzione Now():
Dim dataeorario as Date
dataeorario=Now()
msgbox(dataeorario)
Una funzione, dedicata al recupero solo dell'orario di sistema, è Time(). La funzione Timer restituisce il numero dei secondi passati dalla mezzanotte.
Le componenti estraibili dalle date sono:
  1. Mese
  2. Anno
  3. Giorno
  4. Ore
  5. Minuti
  6. Secondi
Componenti di una data funzione VBA da usare
Mese Month(data)
Anno Year(data)
Giorno Day(data)
Ore Hour(data)
Minuti Minute(data)
Secondi Second(data)

La WeekDay(data) restituisce il progressivo del giorno. Presentiamo la demo in cui acquisita la data di sistema, si possa restituire il messaggio Oggi è:
  1. Domenica;
  2. Lunedì;
  3. Martedì;
  4. Mercoledì;
  5. Giovedì;
  6. Venerdì;
  7. Sabato;
La demo consta delle seguenti righe di codice:
Dim datasistema As Date
Dim costante As Integer
Dim vettoregiorni(1 To 7) As String
vettoregiorni(1) = "Lunedì"
vettoregiorni(2) = "Martedì"
vettoregiorni(3) = "Mercoledì"
vettoregiorni(4) = "Giovedì"
vettoregiorni(5) = "Venerdì"
vettoregiorni(6) = "Sabato"
vettoregiorni(7) = "Domenica"
costante = Weekday(Date, vbUseSystemDayOfWeek)
Select Case costante
    Case 1 To 7 : MsgBox ("Oggi è:" & vettoregiorni(costante))
End Select
Per chiudere l'argomento presentiamo la classe VBA Maths. Racchiude un set di funzioni, le quali ci permettono di manipolare i numeri.
Dato un numero per ottenere la rappresentazione esadecimale dobbiamo utilizzare la funzione Hex
La rappresentazione esadecimale è:
Il codice è:
Sub Main()
    Dim numero As Integer
    Dim stringa As String
    numero = InputBox("Valore in base dieci:")
    stringa = Hex(numero)
    MsgBox ("rappresentazione esadecimale:" & stringa)
End Sub

Guida VBA
E-Learning
Corso MS AccessCorso MS Access
Impara a creare e gestire database in maniera semplice e veloce. A partire da 39 €.
Corso Visual Basic 6Corso Visual Basic 6
Realizzare applicazioni Desktop con VB6. A partire da 39 €.
Link sponsorizzati