Conclusioni

    
    Come ultimo argomento, ci soffermiamo ad analizzare la routine contenuta nel documento di esempio: BarraValuta.xls. La macro inserisce nella barra dei menù "Standard" una casella combinata che permette di calcolare nella cella attiva il cambio valuta tra Euro-Dollaro, Euro-Franco Svizzero, Euro-Sterlina, Euro-Yen e viceversa.
    	Dim ComBarEvento As New Classe1
    	Sub inserisci_casella_combo()
    	Dim combinata As CommandBarComboBox
    	Set combinata = CommandBars("standard") _ 
    	.Controls.Add(msoControlComboBox)
    	With combinata
    		.AddItem "Euro-Dollaro"
    			.AddItem "Euro-Sterlina"
    		.AddItem "Euro-Franco Sv."
    		.AddItem "Euro-Yen"
    		.AddItem "Dollaro-Euro"
    		.AddItem "Sterlina-Euro"
    		.AddItem "Franco Sv.-Euro"
    		.AddItem "Yen-Euro"
    		.Caption = "moneta"
    		.DropDownWidth = 100
    		.Width = 100
    		.ListIndex = 1
    		.Visible = True
    	End With
    	Set ComBarEvento.moneta = combinata
    	End Sub
        
    Creiamo un nuovo modulo di classe ed inseriamo il codice seguente.
    	Public WithEvents moneta As Office.CommandBarComboBox
    	Private Sub moneta_Change(ByVal Controllo As _ 
    	Office.CommandBarComboBox)
    	
    	Const converED As Double = 1.3132, _ 
    	      converES As Double = 0.7, _
    	      converEF As Double = 1.5127, _
    	      converEY As Double = 136.8
    	Static converDE As Double, _
    	       converSE As Double, _
    	       converFE As Double, _
    	       converYE As Double
    	Static Valore As Double, Testo As String
    	
    	converDE = 1 / converED
    	converSE = 1 / converES
    	converFE = 1 / converEF
    	converYE = 1 / converEY
    	
    	If IsNumeric(ActiveCell.Value) Then
    	   Valore = ActiveCell.Value
    	   Testo = Controllo.Text
    	   Select Case Testo
    	    Case Is = "Euro-Dollaro"
    	        Valore = Valore * converED
    	    Case Is = "Euro-Sterlina"
    	        Valore = Valore * converES
    	    Case Is = "Euro-Franco Sv."
    	        Valore = Valore * converEF
    	    Case Is = "Euro-Yen"
    	        Valore = Valore * converEY
    	    Case Is = "Dollaro-Euro"
    	        Valore = Valore * converDE
    	    Case Is = "Sterlina-Euro"
    	        Valore = Valore * converSE
    	    Case Is = "Franco Sv.-Euro"
    	        Valore = Valore * converFE
    	    Case Is = "Yen-Euro"
    	        Valore = Valore * converYE
    	   End Select
    	   ActiveCell.Value = Valore
    	Else
    	    MsgBox "Dato non convertibile"
    	End If
    	
    	End Sub
        
    Da notare alcune differenze rispetto agli esempi precedenti. Focalizziamo l'attenzione sulla parola chiave WithEvents nel modulo di classe "Classe1", in questo caso dichiara una variabile di classe CommandBarComboBox, questo perchè stiamo lavorando con una casella combinata. Notiamo inoltre che l'evento associato alla routine è "change", in quanto la routine viene azionata nel momento in cui è selezionata una voce della casella combinata.
    Contrariamente alla solita "MsgBox", questa volta abbiamo inserito del codice un po' più interessante, che vale la pena di analizzare. Nel caso venga selezionata una voce dalla casella combinata "moneta", la routine valuta la voce selezionata, e converte l'importo della cella attiva nella valuta che ci interessa calcolare. Nel caso il valore della casella non sia numerico ci verrà segnalata l'impossibilità di eseguire la conversione. Ovviamente al momento in cui proverete la routine, il tasso di cambio sarà variato, se volete essere precisi potete aggiornare le costanti in testa al modulo di classe con i valori di cambio corretti.
    Costanti di conversione usati nel programma.
    ConverEDTasso di conversione Euro-Dollaro
    ConverESTasso di conversione Euro-Sterlina
    ConverEFTasso di conversione Euro-Franco Svizzero
    ConverEYTasso di conversione Euro-Yen
    ConverDETasso di conversione Dollaro-Euro
    ConverSETasso di conversione Sterlina-Euro
    ConverFETasso di conversione Franco Svizzero-Euro
    ConverYETasso di conversione Yen-Euro
    Barre e pulsanti personalizzati spesso vengono utilizzati anche per gestire le componenti aggiuntive COM. Le componenti aggiuntive sono dei moduli che non agiscono solamente su un singolo documento, ma aggiungono nuove funzionalità a livello di singola applicazione Office o direttamente su tutto il pacchetto Office.