|
| 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.
|
| ConverED | Tasso di conversione Euro-Dollaro |
| ConverES | Tasso di conversione Euro-Sterlina |
| ConverEF | Tasso di conversione Euro-Franco Svizzero |
| ConverEY | Tasso di conversione Euro-Yen |
| ConverDE | Tasso di conversione Dollaro-Euro |
| ConverSE | Tasso di conversione Sterlina-Euro |
| ConverFE | Tasso di conversione Franco Svizzero-Euro |
| ConverYE | Tasso 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.
|
|