Sei sulla pagina 1di 9

http://web.tiscali.it/sibiscpoint/vb_office/editorvb.

htm

L’editor di Visual Basic per Office

Dalla Versione 97 in poi Office presenta un ambiente di sviluppo completo chiamato Editor di
Visual Basic, con il quale è possibile creare, modificare, fare il debug ed eseguire codice associato
ai documenti Microsoft Office. Per aprire l’editor di Visual Basic fare clic sul pulsante Editor di
Visual Basic sulla barra degli strumenti di Visual Basic. Se non vedete la barra come viene
mostrata qui sotto dovete selezionarla dal menu visualizza/barra degli strumenti mettere il segno
spunta ciccando a fianco della voce Visual Basic e subito comparirà la barra che vedete qui sotto

Un primo sguardo all’editor di Visual Basic

La finestra delle proprietà


Una proprietà è una caratteristica di un oggetto, come il colore o il titolo. Si imposta una proprietà
per specificare una caratteristica o un comportamento di un oggetto. Per esempio, si può impostare
la proprietà SowSpellingErrors di un documento Word a True per mostrare gli errori di ortografia
in un documento.

Si può usare la finestra delle Proprietà per impostare le proprietà di un oggetto al momento della sua
progettazione. La finestra delle proprietà è molto utile mentre si sta laovorando con una finestra

1
dialogo personalizzata e un controllo ActiveX. Per molti oggetti, comunque, è più facile impostare
queste proprietà durante la fase do progettazione, mediante i comandi dell’interfaccia utente.

Per esempio, è possibile impostare la proprietà ShowSpellingErrors di un documento Word a True


selezionando la casella di controllo Nascondi errori ortografici nel documento nella scheda
Ortografia e Grammatica della finestra di dialogo Opzioni (mnenu Strumenti).

E’ possibile semplificare l’area di lavoro chiudendo la finestra delle Proprietà


se in un certo momento non dovesse servire. In ogni momento è possibile
riaprirla facendo clic su Finestra proprietà nel menu Visualizza.

La Gestione progetti

Tutto il codice associato ad una cartella di lavoro, documento, modello, o presentazione è


memorizzato in un progetto che viene automaticamente memorizzato e salvato con la cartella di
lavoro, il documento, il modello, o la presentazione. Nella Gestione progetti dell'Editor di Visual
Basic, è possibile visualizzare, modificare e navigare all'interno dei progetti. Si può ridimensionare
la finestra Gestione progetti per renderne più facile l'accesso, oppure agganciarla a uno qualunque
dei lati della finestra dell'Editor di Visual Basic.

Nota In Word, poiché il modello Normal è disponibile per ogni documento di Word, c'è sempre un
progetto per tale modello nella Gestione progetti

All'interno di un progetto, ci possono essere oggetti a cui sono associati eventi, finestre di dialogo
personalizzate (chiamate form nella Gestione progetti), moduli standard, moduli di classe, e
riferimenti.

http://web.tiscali.it/sibiscpoint/vb_office/editorvb_2.htm

Suggerimento Le cartelle nella Gestione progetti suddividono gli elementi del progetto in
categorie- Se non si vedono cartelle fare clic sul pulsante Espandi/comprimi cartelle posto nella
parte alta della finestra Gestione progetti. 

In Gestione progetti, c'è un progetto per ciascuna cartella dì lavoro, documento, modello, o
presentazione sia aperta che referenziata. In ogni progetto si possono trovare oggetti (come oggetti
Documento, oggetti Cartella di lavoro e oggetti Foglio di lavoro) che riconoscono eventi; moduli
(chiamati anche UserForms), che contengono sia la parte grafica delle finestre di dialogo
personalizzate che il codice che controlla come l'utente interagisce con una particolare finestra di
dialogo; moduli standard che contengono codice che non è associato con un particolare oggetto o
modulo; i moduli di classe, che definiscono informazioni su un tipo di oggetto personalizzato;
infine, riferimenti ad altri progetti- Per vedere il codice contenuto in un modulo o il codice associalo
a un oggetto o ad un modulo, selezionare l'elemento nella Gestione progetti, quindi fare clic sul
pulsante Visualizza codice in alto nella Gestione progetti. Per vedere l'interfaccia utente di un
oggetto o di un modulo particolare, fare clic sull'oggetto nella Gestione progetti, quindi fare clic
sul pulsante Visualizza oggetto in alto nella Gestione progetti. 

2
La finestra Codice
Per vedere il codice di un progetto, visualizzare la finestra Gestione progetti, selezionare l'elemento
che contiene il codice e quindi fare clic sul pulsante Visualizza codice in alto nella Gestione
progetti. 

Suggerimento Se si desidera vedere più di una procedura alla volta all'interno delta finestra de!
codice, selezionare la casella di controllo Visualizza modulo intero nella scheda Editor , della
finestra di dialogo Opzioni (menu Strumenti). Disattivare questa casella di controllio per vedere
soltanto una procedura alla volta.

Si può navigare all'internmo della finestra del codice utilizzando le voci elencate nelle caselle
Oggetto e Routine. Scegliere Generai da Oggetto e un nome da Routine per analizzare una
procedura che non è associata ad uno specifico evento. Nella casella Oggetto, fare clic su un oggetto
e quindi fare clic su un nome di evento nella casella Routine per vedere il codice che viene eseguito
quando si verifica uno specifico evento. 

Semplificare feditor di Visual Basic


Se tutto quello che si desidera è scrivere una semplice procedura o modificare una macro registrata
in precedenza, è possibile che si preferisca rinunciare ad alcune delle caratteristiche avanzate
dell'Editor di Visual Basic a! fine di ottenere un'area di lavoro più semplice. Ecco alcuni modi per
semplificare il proprio ambiente di sviluppo:

• Chiudere la finestra Proprietà. Se non si sta lavorando con finestre di dialogo


personalizzate o controlli ActiveX, la finestra delle proprietà non sarà molto utile. Per
riaprire la finestra Proprietà fare semplicemente clic sulla voce Finestra proprietà nel
menu Visualizza.
• Nascondere ogni barra degli strumenti che non si sta utilizzando. Per

rivisualìzzare le barre degli strumenti Debug, Modifica, Standard e UserForm fare clic
col pulsante destro del mouse sulla barra dei menu dell'Editor di Visual Basic, e quindi
fare clic sul nome della barra degli strumenti che si vuole visualizzare.

• Se si sta lavorando solo sul codice di un modulo standard e non si desidera visualizzare il
resto del codice del progetto o del codice di altri progetti, si può chiudere la Gestione
progetti. Per riaprire la Gestione progetti, fare clic su Gestione progetti nel menu
Visualizza. 

Registrazione di macro
E possibile usare il registratore di macro per tradurre i comandi dell'interfaccia
utente in codice Visual Basic. Registrare una semplice macro può costituire un
inizio per la creazione di macro più complesse, e può aiutare ad acquisire familiarità
con gli oggetti, le proprietà e i metodi di un'applicazione.

> Per registrare una macro


3
1 Per visualizzare la barra degli strumenti di Visual Basic selezionare Barre
degli strumenti dal menu Visualizza all'interno della finestra principale (non
nelt'Editor di Visual Basic) e quindi fare clic su Visual Basic se non è già
selezionato.
2 Sulla barra degli strumenti Visual Basic, fare clic sul pulsante Registra macro. 

3 Nella finestra di dialogo Registra macro sostituire, se si desidera, il nome macro


predefinito nella casella Nome macro, e fare clic su OK.

È possibile usare la casella Memorizza la macro in per scegliere dove memorizzare la


macro. Per ora, fare clic su Questa cartella di lavoro in Microsoft Excel, su Tutti i
documenti (Normal.dot) in Word, o sul nome della presentazione attiva in Power Point.
4 Eseguire le azioni per le quali si desidera generare il codice Visual Basic.

5 Sulla barra degli strumenti Interrompi, fare clic sul pulsante Interrompi
Registrazione.
La macro è stata registrata. Per vedere il codice relativo, puntare su Macro nel menu Strumenti, e
quindi fare clic su Macro. Nella finestra di dialogo Macro, selezionare il nome di macro
approprialo, quindi fare clic su Modifica.

Navigare nei progetti


Si può usare la Gestione progetti per navigare in qualsiasi procedura di qualunque progetto aperto.
Si cominci a trovare l'oggetto che contiene la macro. La maggior parte delle procedure generali,
comprese le macro registrate, sono memorizzate in un modulo standard. Se si hanno delle cartelle
visualizzate nella Gestione progetti, i moduli standard sono collocati nelle cartelle dei Moduli.

Suggerimento Se non si vede nessuna cartella nella Gestione progetti, fare clic sul pulsante
Espandi/comprimi cartelle per visualizzarle.

Dopo aver trovato l'oggetto che contiene il codice, fare doppio clic sullo stesso per visualizzare le
procedure che contiene. E possibile usare questo metodo per esaminare sia le procedure scritte da
zero, sia le macro registrate. 

Dove una macro viene registrata dipende da quale locazione si è specificata nella casella
Memorizza la macro in nella finestra di dialogo Registra macro quando si è proceduto alla sua
creazione. In Microsoft Excel, se si sceglie Questa cartella dì lavoro nella casella Memorizza la
macro in quando si è registrata una macro. questa verrà memorizzata in Macrol, nella cartella
Moduli del progetto per la cartella di lavoro per cui si è registrata la macro. In Word, se si è fatto
clic su Tutti i documenti (Normal.dot), nella casella Memorizza la macro in, quando si è
registrata la macro, la macro sarà memorizzata nel modulo NuoveMacro nella cartella Moduli del
progetto Normnal. Se in PowerPoint si è fatto clic sul nome della presentazione attiva nella casella
Memorizza la macro in, quando si è registrata la macro, questa sarà memorizzata in Macro1 nella
cartella Macro del progetto per la presentazione nella quale la macro è stata registrata.

Suggerimento Se si vuoi vedere più di una procedura alla volta nella finestra codice, accertarsi
che la casella di controllo Visualizza modulo intero sia selezionata nella scheda Editor della

4
finestra di dialogo Opzioni (menu Strumenti). Altrimenti, si dovrà usare la casella Routine, nella
finestra del codice, per spostarsi da una procedura ad un'altra.

http://web.tiscali.it/sibiscpoint/vb_office/editorvb_3.htm

Scrivere una nuova procedura


Se si vuole scrivere del codice che non, è associato ad uno specifico oggetto o evento, si può creare
una procedura in un modulo standard nel Editor di Visual Basic. Una procedura (o routine, nella
terminologia della versione italiana di VBA) è una unità di codice racchiusa tra le istruzioni Sub e
End Sub o tra le istruzioni Function e End Function.

Per creare un modulo standard vuoto, selezionare la finestra Gestione progetti, scegliere il
progetto a cui si vuole aggiungere il modulo, e quindi fare clic su Modulo nel menu Inserisci.

Per aprire un modulo standard esistente, selezionare il modulo nella Gestione progetti e quindi fare
clic sul pulsante Visualizza codice.

Per aggiungere una procedura a un modulo, selezionare il modulo all'interno di Gestione progetti,
fare clic su Routine nel menu Inserisci, selezionare le opzioni desiderate nella finestra di dialogo
Aggiungi routine, quindi fare clic su OK. Per ulteriori informazioni riguardo le opzioni nella
finestra di dialogo, premere FI mentre la finestra di dialogo è visualizzata. Per esempio digitare
Test1 nella casella Nome della finestra di dialogo, fare clic su Sub sotto Tipo, fare clic su Public
sotto Area di validità e quindi OK. La seguente procedura apparirà nel vostro modulo.

Public Sub Testl()

End Sub
 
Dopo aver aggiunto una procedura a un modulo, si può aggiungere del codice.
L'esempio che segue aggiunge una istruzione che visualizza una finestra di
messaggio.
Public Sub Testit)

MsgBox "Questa è la procedura Test1 in esecuzione"

End Sub 

Se si vuole scrivere del codice che venga automaticamente eseguito quando si verifica un
particolare evento (per esempio, quando viene aperto un documento, viene ricalcolato un foglio di
lavoro o viene premuto un pulsante in una finestra di dialogo) si deve scrivere una procedura
associata all'evento per l'oggetto o per il modulo. Per informazioni generali sulla scrittura di
procedure evento si veda "Scrivere codice per rispondere agli eventi" più avanti in questo capitolo.
Per informazioni specifiche riguardo alla scrittura di procedure evento per finestre di dialogo
personalizzate e controlli ActiveX si veda il Capitolo 12, "Controlli ActiveX e finestre di dialogo."

5
 Qual è la differenza tra una macro e una procedura?

Sebbene i termini macro e procedura siano a volte usati indifferentemente, essi hanno in realtà
significati differenti. Procedura è il termine più vasto; si applica ad una unità di codice racchiuso tra
le istruzioni Sub e End Sub o tra le istruzioni Function e End Function. Macro è un termine
specifico che si applica soltanto a procedure Sub pubbliche che non richiedono argomenti. Tutte le
macro sono procedure, ma non tutte le procedure sono macro. Tutte le procedure che vengono
generate con il registratore di macro e tutte le procedure che è possibile eseguire dalla finestra di
dialogo Macro delle applicazioni Office sono macro.

Confronto tra procedure Sub e Function


Con Visual Basic, è possibile creare due tipi di procedure: procedure Sub e procedure Function.
Una procedura Sub è una unità di codice racchiusa tra le istruzioni Sub e End Sub. Una procedura
Sub esegue un compito ma non restituisce alcun valore. L'esempio seguente è una procedura Sub.

Sub DisplayWelcome()
MsgBox "Melcome”
End Sub
 
Una procedura Function è una unità di codice racchiusa tra le istruzioni Function e End Function.
Come una procedura Sub, una procedura Function esegue un preciso compito. A differenza della
procedura Sub, tuttavia essa restituisce anche un valore. Il seguente esempio mostra una procedura
Function.
Function AddThree(OnginalVa1ue As Long)

AddThree = OriginalValue + 3

End Function

Confronto tra procedure Public e Private


Se una procedura è stata dichiarata con la parola chiave Public è possibile richiamarla da qualunque
modulo dell'applicazione. E possibile richiamare una procedura privata, dichiarata con la parola
chiave Private, soltanto da altre procedure dello stesso modulo. Tanto le procedure Sub quanto le
procedure Function possono essere sia pubbliche che private. I seguenti sono esempi di procedure
private.

Private sub Test1()

MsgBox ”questa è la procedura Test1 in esecuzione”

End Sub
Private Function AddThree(OriginalVa1ue As Long)

AddThree = OriginalValue + 3

6
End Function

I seguenti sono esempi di procedure pubbliche.


Public Sub Test1()

MsgBox "Questa è la procedura Testi in esecuzione”

End Sub

Public Functfon AddThree(Origina1Value As Long)

AddThree = OriginalValue + 3

End Function

Se non si usa ne la parola chiave Public ne la parola chiave Private per dichiarare una
procedura, la procedura si intende, implicitamente, pubblica. Quindi anche i seguenti sono
esempi sono di procedure pubbliche.

Sub Test1()
MsgBox " Questa è la procedura Testi in esecuzione "
End Sub
Function AddThree(OriginalValue As Long)
AddThree = OriginalValue + 3 End
Function
Sebbene non sia obbligatorio utilizzare la parola chiave Public quando si crea una procedura
di tale tipo, è consigliabile esplicitarla al fine di rendere immediatamente riconoscibili le
procedure pubbliche da quelle privale. Per ulteriori informazioni, vedere "Public o Private”
nella Guida in linea. 

Utilizzare il valore restituito da una funzione


Perché una funzione restituisca un valore deve includere un'istruzione che assegni un, valore
al nome della funzione. Nel seguente esempio, il valore assegnato a

ConeSurface sarà il valore restituito dalla funzione.

Functìon ConeSurface(radius, height)

Const Pi = 3.14159

coneBase = Pi * radius ^ 2

coneCirc = 2 * Pi * radium

coneSide = Sqr(radius ^ 2 + height ^ 2) * coneCirc / 2

7
ConeSurface = coneBase + coneSide End Functìon

Le informazioni che si devono fornire a una procedura Sub o ad una procedura Function affinché
svolgano il loro compito (radius e height nell'esempio precedente) vengono passate sotto forma di
argomenti.

Il valore di ritorno di una procedura Function può diventare parte di una espressione più ampia. Per
esempio la seguente espressione utilizza il valore di ritorno delle funzioni ConeSurface e
ScoopSurface per eseguire il suo calcolo. 

TotalSurface = ConeSurface(3,11) + 2 *ScoopSurface(3)

==========================================================

Questa UDF [(User Defined Function) is simply a function that you create yourself with VBA] fa
quello che chiedi e funziona sia coi numeri che con le stringhe, inoltre c'è un controllo di congruità
dei valori passati, da usarsi come da esempi:
In una cella:

=ucut(B5;6;10)

=ucut(B4;"fase";"moto")

In una sub vba:

miaVar2=ucut(miaVar1;6;10)

miaVar2=ucut(miaVar1;"fase";"moto")

EDIT: ovviamente funziona anche con le date:


=ucut(B5;B3;B4) dove in B3 c'è la data più "bassa" ed in B4 la data più "alta"

Questo il codice da inserire in un modulo standard


Public Function uCut(ByVal vVal As Variant, ByVal vMin As Variant, ByVal vMax As
Variant) As Variant

'by scossa

If VarType(vVal) = VarType(vMin) And VarType(vVal) = VarType(vMax) Then

uCut = IIf(vVal > vMax, vMax, IIf(vVal < vMin, vMin, vVal))

Else

uCut = CVErr(Excel.xlErrNum)

End If

End Function
==========================================================

La funzione è questa
Public Function f_cut(numero, valore, minimo, massimo)
f_cut = WorksheetFunction.Max(WorksheetFunction.Min(0.0025 * numero * valore, massimo),
minimo)
End Function
8
9

Potrebbero piacerti anche