Comprendere le funzioni VBA e loro utilizzo

Una funzione esegue un calcolo e restituisce un singolo valore. La funzione SUM aggiunge la somma di un intervallo di valori. Lo stesso vale per le funzioni usate nelle vostre espressioni VBA: Ogni funzione fa la sua cosa e restituisce un singolo valore.

Le funzioni utilizzate in VBA possono provenire da tre fonti:

  • Funzioni incorporate fornite da VBA
  • Funzioni di foglio forniti da Excel
  • Le funzioni personalizzate che voi (o qualcun altro) di scrittura, utilizzando VBA

VBA offre numerose funzioni incorporate. Alcune di queste funzioni hanno argomenti e altri no.

Esempi di funzioni VBA

Ecco alcuni esempi di utilizzo di funzioni VBA in codice. Si noti l'uso della funzione MsgBox per visualizzare un valore in una finestra di messaggio. Sì, MsgBox è una funzione VBA - piuttosto insolito, ma una funzione comunque. Questa utile funzione visualizza un messaggio in una finestra di dialogo pop-up.

Visualizzazione della data di sistema

Il primo esempio utilizza la funzione Data di VBA per visualizzare la data di sistema corrente in una finestra di messaggio:

Sub MostraData ()
MsgBox Data
End Sub

Si noti che la funzione Data non utilizza un argomento. A differenza di funzioni di foglio, una funzione VBA con alcun argomento non richiede un insieme vuoto di parentesi. In realtà, se si fornisce un insieme vuoto di parentesi, il VBE li rimuovere.

Per ottenere la data e l'ora del sistema, utilizzare la funzione Ora, invece della funzione Data. O per ottenere solo il tempo, utilizzare la funzione Time.

Trovare una lunghezza di stringa

La seguente procedura utilizza la funzione VBA Len, che restituisce la lunghezza di una stringa. La funzione Len prende un argomento: la stringa. Quando si esegue questa procedura, la finestra di messaggio visualizza 11 perché l'argomento ha 11 caratteri.

Sub GetLength ()
Dim Stringa As String
Dim StringLength As Integer
Stringa = "Ciao mondo"
StringLength = Len (Stringa)
MsgBox StringLength
End Sub

Excel ha anche una funzione, che è possibile utilizzare per le formule del foglio di lavoro. La versione Excel e la funzione VBA funzionano allo stesso.

Visualizzazione la parte intera di un numero

La seguente procedura utilizza la funzione Fix, che restituisce la parte intera di un valore - il valore, senza cifre decimali:

Sub GetIntegerPart ()
Dim MyValue As Double
Dim intValue As Integer
MyValue = 123.456
IntValue = Fix (MyValue)
MsgBox intValue
End Sub

In questo caso, la finestra di messaggio viene visualizzato 123.

VBA ha una funzione simile chiamato Int. La differenza tra Int e Fix è illustra come gli con i numeri negativi.

  • Int restituisce il primo intero negativo che è minore o uguale all'argomento.
  • Fix restituisce il primo intero negativo che è maggiore o uguale all'argomento.

Determinare un file di dimensioni

La seguente procedura Sub visualizza le dimensioni, in byte, del file eseguibile di Excel. Essa trova questo valore utilizzando la funzione FileLen.

Sub GetFileSize ()
Dim TheFile As String
TheFile = "c: \ MSOFFICE \ EXCEL \ EXCEL.EXE"
MsgBox FileLen (TheFile)
End Sub

Si noti che questo duri codici di routine il nome del file (cioè, afferma esplicitamente il percorso). Generalmente, questa non è una buona idea. Il file potrebbe non essere sull'unità C, o la cartella Excel potrebbe avere un nome diverso. La seguente istruzione mostra un approccio migliore:

TheFile = Application.Path & "\ EXCEL.EXE"

Path è una proprietà dell'oggetto Application. Esso restituisce semplicemente il nome della cartella in cui è installata l'applicazione (cioè, Excel) (senza barra rovesciata finale).

Identificare il tipo di un oggetto selezionato

La seguente procedura utilizza la funzione TypeName, che restituisce il tipo di oggetto selezionato (come una stringa):

Sub ShowSelectionType ()
SelType Dim As String
SelType = TypeName (Selezione)
MsgBox SelType
End Sub

Questo potrebbe essere un intervallo, un ChartObject, un TextBox, o qualsiasi altro tipo di oggetto che può essere selezionato.

La funzione TypeName è molto versatile. È inoltre possibile utilizzare questa funzione per determinare il tipo di dati di una variabile.

Funzioni VBA che fanno più che restituire un valore

Poche funzioni di VBA vanno al di là di ogni aspettativa. Piuttosto che limitarsi a restituire un valore, queste funzioni hanno alcuni effetti collaterali utili. Tabella 1 le elenca.

Tabella 1: Funzioni con vantaggi collaterali utili


Funzione

Che cosa fa

MsgBox

Visualizza una finestra di dialogo a portata di mano che contiene un messaggio e pulsanti. La funzione restituisce un codice che identifica quale pulsante l'utente fa clic.

InputBox

Visualizza una finestra di dialogo semplice che chiede all'utente alcuni input. La funzione restituisce qualunque sia l'utente entra nella finestra di dialogo.

Conchiglia

Esegue un altro programma. La funzione restituisce l'ID compito (un identificatore unico) del altro programma (o un errore se la funzione non può avviare l'altro programma).

Funzioni Discovering VBA

Come si fa a scoprire che funziona VBA fornisce? Buona domanda. La fonte migliore è il sistema di Guida in linea di Visual Basic di Excel. Tabella 2 contiene un elenco parziale di funzioni (meno alcune delle funzioni più specializzate o oscuri).

Per informazioni dettagliate su una particolare funzione, digitare il nome di una funzione in un modulo VBA, spostare il cursore in qualsiasi punto del testo, e premere F1.

Tabella 2: più utili funzioni integrate di VBA


Funzione

Che cosa fa

Abs

Restituisce il valore assoluto di un numero

Schieramento

Restituisce una variante che contiene una matrice

Asc

Converte il primo carattere di una stringa al suo valore ASCII

Atn

Restituisce l'arcotangente di un numero

Scegliere

Restituisce un valore da un elenco di elementi

Chr

Converte un valore in una stringa ANSI

Cos

Restituisce coseno di un numero

CurDir

Restituisce il percorso corrente

Data

Restituisce la data corrente del sistema

DateAdd

Restituisce una data per la quale un intervallo di tempo specificato è stato

aggiunto - per esempio, un mese da una data particolare

DateDiff

Restituisce un numero intero che mostra il numero di intervalli di tempo specificati tra due date, per esempio il numero di mesi tra oggi e il tuo compleanno

DatePart

Restituisce un intero che contiene la parte specificata di una data

Data - per esempio, il giorno di una data dell'anno

DateSerial

Converte una data per un numero di serie

DateValue

Converte una stringa in una data

Giorno

Restituisce il giorno del mese da un valore di data

Dir

Restituisce il nome di un file o una directory che corrisponde a un modello

Erl

Restituisce il numero di riga che ha causato un errore

Sbagliare

Restituisce il numero di errore di una condizione di errore

Errore

Restituisce il messaggio di errore che corrisponde ad un numero di errore

Exp

Restituisce la base del logaritmo naturale (e) elevato a una potenza

FileLen

Restituisce il numero di byte in un file

Fissare

Restituisce un numero parte intera

Formato

Visualizza l'espressione in un formato particolare

GetSetting

Restituisce un valore dal Registro di sistema di Windows

Hex

Converte da decimale in esadecimale

Ora

Restituisce la porzione ore di un tempo

InputBox

Visualizza una casella per richiedere all'utente per l'input

InStr

Restituisce la posizione di una stringa all'interno di un'altra stringa

Int

Restituisce la parte intera di un numero

IPmt

Restituisce il pagamento di interessi di una rendita o di prestito

IsArray

Restituisce True se una variabile è un array

IsDate

Restituisce True se l'espressione è una data

IsEmpty

Restituisce True se una variabile non è stata inizializzata

IsError

Restituisce True se l'espressione è un valore di errore

IsMissing

Restituisce True se un argomento facoltativo non è stato passato a una procedura

IsNull

Restituisce True se l'espressione non contiene dati validi

IsNumeric

Restituisce True se l'espressione può essere valutata come un numero

IsObject

Restituisce True se l'espressione fa riferimento a un oggetto di automazione

LBound

Restituisce il più piccolo indice di una dimensione di un array

LCase

Restituisce una stringa convertita in minuscolo

Sinistra

Restituisce un numero specificato di caratteri dalla sinistra di una stringa

Len

Restituisce il numero di caratteri di una stringa

Log

Restituisce il logaritmo naturale di un numero di base e

LTrim

Restituisce una copia di una stringa, con eventuali spazi iniziali rimossi

Medio

Restituisce un numero specificato di caratteri da una stringa

Minuto

Restituisce la porzione minuti di un valore di tempo

Mese

Restituisce il mese da un valore di data

MsgBox

Visualizza una finestra di messaggio e (opzionalmente) restituisce un valore

Ora

Restituisce la data di sistema e l'ora correnti

RGB

Restituisce un valore RGB numerico che rappresenta un colore

Destra

Restituisce un numero specificato di caratteri da destra di una stringa

Rnd

Restituisce un numero casuale compreso tra 0 e 1

RTrim

Restituisce una copia di una stringa, con eventuali spazi finali rimossi

Secondo

Restituisce la porzione secondi di un valore di tempo

Sgn

Restituisce un numero intero che indica un numero di segno

Conchiglia

Esegue un programma eseguibile

Peccato

Restituisce seno di un numero

Spazio

Restituisce una stringa con un determinato numero di spazi

Sqr

Restituisce un numero radice quadrata

Str

Restituisce una rappresentazione in formato stringa di un numero

StrComp

Restituisce un valore che indica il risultato di un confronto di stringhe

Corda

Restituisce un carattere ripetizione o una stringa

Abbronzatura

Restituisce la tangente di un numero

Tempo

Restituisce l'ora corrente del sistema

Timer

Restituisce il numero di secondi dalla mezzanotte

TimeSerial

Restituisce il tempo per un ora, minuti e secondi specificato

TimeValue

Converte una stringa in un numero di serie di tempo

Rifilare

Restituisce una stringa senza spazi iniziali o finali

TypeName

Restituisce una stringa che descrive il tipo di dati di una variabile

UBound

Restituisce il più grande indice disponibile per la dimensione di un array

UCase

Converte una stringa in maiuscolo

Val

Restituisce i numeri contenuti in una stringa

VarType

Restituisce un valore che indica sottotipo di una variabile

Giorno feriale

Restituisce un numero che rappresenta un giorno della settimana

Anno

Restituisce l'anno da un valore di data