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.

Cognolato Studio 2005