SB e VBA a confronto
|
|
| Di seguito sono riportati schematicamente alcune differenze tra ExcelVBA e CalcSB. Ad ogni frammento di codice VBA corrisponde l’equivalente traduzione in SB.
|
|
| Una nota generale nella differenza tra VBA ed SB. In VBA, quando un oggetto Excel è referenziato, come un range di celle, se non è esplicitamente codificato, si assume che il range di celle sia contenuta nella cartella attiva (ActiveWorkbook) e nel foglio attivo (ActiveSheet). Al contrario in SB ogni riferimento ad un oggetto di Calc deve essere completamente identificato. In altre parole per un range di celle è necessario specificare la cartella [spreadsheet] ed il foglio [sheet].
|
|
| Una tecnica molto utile per comprendere il codice in ExcelVBA è quella di usare il generatore di macro. La stessa tecnica non è altrettanto efficace in CalcSB. Il codice generato dal registratore di macro è basato sull’interazione tra lo “spreadsheet” e la manipolazione risultante la registrazione del modello ad oggetti del foglio di lavoro.
|
|
| Il codice spesso risulta eterogeneo, anche se comunque fornisce un indizio nel comprendere il modello ad oggetti legato al foglio di lavoro di Calc. |
|
| Note generali sulla programmazione:
|
|
| Indicatore che segnala che la macro è in esecuzione. |
| Excel |
Il puntatore del mouse cambia da una freccia ad una clessidra. |
| Calc |
Il puntatore non cambia. Non c’è alcuna indicazione che la macro è in esecuzione. |
|
|
| Terminazione manuale di una macro in esecuzione. |
| Excel |
Ctrl-Break |
| Calc |
Strumenti > Macro > Macro > Modifica > Premere il pulsante Stop |
|
|
| Assegnare un oggetto ad una variabile. |
| Excel |
Sub MyProc
Dim wksh as Worksheet
set wksh = ActiveSheet
End Sub
|
| Calc |
Sub MyProc
Dim oSheet as Object
oSheet = ThisComponent.CurrentController. _
ActiveSheet
'or
set oSheet = ThisComponent. _
CurrentController.ActiveSheet
End Sub |
| Note: Mentre l’istruzione set è obbligatoria in VBA, può essere omessa in SB. In Excel, oltre all’oggetto generico Object, ci sono vari tipi di oggetti specifici (Worksheet, Workbook, Range, etc.), al contrario, in Calc, esiste solo il tipo generico Object. |
|
|
|