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)

Cognolato Studio 2005