OO7

    
    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)