L'oggetto Range/Cell
|
|
| Assegna un nome definito dall’utente "MyCells" al range B2:C3 tramite l’interfaccia utente di Excel o Calc. |
| Excel |
Esistono 2 metodi:
- Selezionare cells B2:C3, dal menù: Inserisci > Nome > Definisci.. , inserire il nome "MyCells" nella finestra di pop-up e premere aggiungi.
- Selezionare le celle B2:C3, inserire "MyCells" in “Nome campo” nella finestra attiva.
|
| Calc |
Esistono 2 metodi:
- Selezionare cells B2:C3, dal menù: Inserisci > Nome > Definisci.. , inserire il nome "MyCells" nella finestra di pop-up e premere aggiungi.
- Selezionare le celle B2:C3, premi Ctrl-F3, aggiungi "MyCells" nella finestra attiva e premi il bottone "Aggiungi".
|
|
|
| Assegnare un nome definito dall’utente "MyCells" alle celle B2:C3 in "Sheet1" e lo stesso nome A1:B3 in "Sheet2" tramite l’interfaccia utente di Excel o Calc]. |
| Excel |
Selezionare le celle B2:C3 di "Sheet1":
- Selezionare cells B2:C3, dal menù: Inserisci > Nome > Definisci.. , inserire il nome "Sheet1!MyCells" nella finestra pop-up e premere “Aggiungi”.
- Inserisci "Sheet1!MyCells" in “Nome campo” della finestra attiva.
Ora entriamo in "Sheet2" evidenziando le celle A1:B3 ripetere gli stessi passi precedenti avendo cura di cambiare il nome "Sheet2!MyCells".
|
| Calc |
Non è possibile. Calc non permette lo stesso nome id range appartenenti a 2 fogli dello stesso documento.
|
|
|
| Memorizzare un numero in una cella. |
| VBA |
Range("B1").Value = 12
|
| SB |
ThisComponent.CurrentController.ActiveSheet. _
getCellRangeByName("B1").Value = 12
|
|
|
| Recuperare un numero da una cella. |
| VBA |
MyNumber = Range("MyCell").Value
|
| SB |
MyNumber = ThisComponent.CurrentController.ActiveSheet. _
getCellRangeByName("MyCell").Value
|
|
|
| Recuperare una stringa da una cella. |
| VBA |
MyString = Range("MyCell").Value
|
| SB |
MyString = ThisComponent.CurrentController.ActiveSheet. _
getCellRangeByName("MyCell").String
|
|
|
| Accedere alla cella C4 nel Range("B1:E5") da una posizione relativa. |
| VBA |
Range("B1:E5").Cells(4,2).Value
'or
Range("B1:E5").Offset(3,1).Value
|
| SB |
ThisComponent.CurrentController.ActiveSheet. _
getCellRangeByName("B1:E5").getCellByPosition(1,3).Value
|
| Note: In VBA ci sono 2 modi per accedere ad una cella in modo relativo. Il primo metodo Cells() usa l’ubicazione relativa di riga e colonna e la numerazione parte da 1, esempio la cella in alto a sinistra è .Cells(1,1). Il secondo metodo è Offset() e localizza le righe e le colonne partendo da 0,esempio la cella in alto a sinistra è .Offset(0,0). In SB, gli argomenti per .getByCellPosition() sono rovesciati rispetto a VBA, il numero di colonna è il primo argomento seguito dal numero di riga. La numerazione parted a 0, quindi la cella in alto a sinistra è .getByCellPosition(0,0). Questo rende .getByCellPosition() simile al metodo .Offset() di VBA. |
|
|
| Accedere alla cella F2 nel Range("B1:E5") da posizione relativa. (Nota: Cella F2 è esterna a Range("B1:E5")). |
| VBA |
Range("B1:E5").Cells(2,5).Value
Range("B1:E5").Offset(1,4).Value
|
| SB |
Impossibile in SB
|
| Note: Se in SB usassimo la stessa tecnica dell’esempio precedente avremmo un errore: com.sun.star.lang.IndexOutOfBoundException. VBA al contrario non dà problemi. Per ovviare a questo errore in SB l’unica soluzione è usare le coordinate assolute riferite al foglio. |
|
|
| Visualizzare l’indirizzo di una cella o di un range di celle nel foglio attivo. |
| VBA |
Sub MyProc
msgbox Range("B3").Address
msgbox Range("B3:D5").Address
'Assegnamo il nome "MyCell" alla cella B5 quindi:
msgbox Range("MyCell").Address
End Sub
|
| SB |
Sub MyProc
Dim oSheet as Object
oSheet = ThisComponent.CurrentController.ActiveSheet
msgbox CellRangeAddressString( _
oSheet.getCellRangeByName("B3"))
msgbox CellRangeAddressString( _
oSheet.getCellRangeByName("B3:D5"))
'Assegnamo il nome "MyCell" alla cella B5 quindi:
msgbox CellRangeAddressString( _
oSheet.getCellRangeByName("MyCell")
msgbox CellRangeAddressString( _
oSheet.getCellByPosition(3,6))
End Sub
|
|
|
| Trova la cella alla fine di una riga o di una colonna di dati in un foglio. Si presuppone che tutte le celle B3:E15 contengano dati. |
| VBA |
Sub MyProc
'ci posizioniamo nell’angolo in alto a sx del range
Range("B3").Select
'Troviamo l’ultima cella nella riga corrente di dati
'ovvero E3
Selection.end(xlToRight).Select
'Troviamo l’ultima cella nella colonna corrente di dati
'ovvero E15
Selection.end(xlDown).Selection
'Troviamo la prima cella nella riga corrente di dati
'ovvero B15
Selection.end(xlToLeft).Select
'Troviamo la prima cella nella colonna corrente di dati
'ovvero B3
Selection.end(xlUp).Select
End Sub
|
| SB |
Sub MyProc
Dim oSheet as Object, oCell as Object
'definiamo l’oggetto foglio
oSheet = ThisComponent.CurrentController.ActiveSheet
'ci posizioniamo nell’angolo in alto a sx del range
oCell = oSheet.getCellRangeByName("B3")
ThisComponent.CurrentController.select(oCell)
'Troviamo l’ultima cella nella riga corrente
'di dati ovvero E3
oCell = MoveCursorToEnd(oCell,"xlToRight")
ThisComponent.CurrentController.select(oCell)
'Troviamo l’ultima cella nella colonna corrente
'di dati ovvero E15
oCell = MoveCursorToEnd(oCell,"xlDown")
ThisComponent.CurrentController.select(oCell)
'Troviamo la prima cella nella riga corrente
'di dati ovvero B15
oCell = MoveCursorToEnd(oCell,"xlToLeft")
ThisComponent.CurrentController.select(oCell)
'Troviamo la prima cella nella colonna corrente di dati
'ovvero B3
oCell = MoveCursorToEnd(oCell,"xlUp")
ThisComponent.CurrentController.select(oCell)
End Sub
|
|
|
| Pulisce il contenuto di un range di celle nel foglio attivo. Non influisce sul formato delle celle. |
| VBA |
Range("B1:E5").ClearContents
|
| SB |
ThisComponent.CurrentController.ActiveSheet. _
getCellByName("B1:E5").clearContents( _
com.sun.star.sheet.CellFlags.VALUE _
+com.sun.star.sheet.CellFlags.STRING _
+com.sun.star.sheet.CellFlags.DATETIME)
|
|
|
| Pulisce il contenuto di un range di celle nel foglio attivo, incluso il formato delle celle. |
| VBA |
Worksheets("MySheet").Range("B1:E5").Clear
|
| SB |
ThisComponent.Sheets.getByName("MySheet"). _
getCellRangeByName("B1:E5").clearContents( _
com.sun.star.sheet.CellFlags.VALUE _
+ com.sun.star.sheet.CellFlags.STRING _
+ com.sun.star.sheet.CellFlags.DATETIME _
+ com.sun.star.sheet.CellFlags.ANNOTATION _
+ com.sun.star.sheet.CellFlags.FORMULA _
+ com.sun.star.sheet.CellFlags.HARDATTR _
+ com.sun.star.sheet.CellFlags.STYLES _
+ com.sun.star.sheet.CellFlags.OBJECTS _
+ com.sun.star.sheet.CellFlags.EDITATTR)
|
|
|
|