Difference between revisions of "EN/Documentation/BASIC Guide/Cells and Ranges"

From Apache OpenOffice Wiki
Jump to: navigation, search
(New page: {{EN/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Documentation/BASIC Guide/Spreadsheets |NextPage=Documentation/BASIC Guide/Formatting Spreadsheet Docu...)
 
 
(One intermediate revision by one other user not shown)
Line 6: Line 6:
 
|spread=block
 
|spread=block
 
}}
 
}}
{{DISPLAYTITLE:
+
{{DISPLAYTITLE:Celle e intervalli}}
セルと範囲}}
+
 
   
 
   
セル個々の表計算ドキュメントを構成するのがセルという単位で、これらは 2 次元のリストで管理されます。つまり各セルは、左上隅を原点 (0,0) とする X と Y 座標で指定できます。
+
Un foglio elettronico è costituito da un elenco bidimensionale contenente le celle. Ogni cella è definita dalla sua posizione X e Y rispetto alla cella superiore sinistra che ha la posizione (0,0).
  
以下のサンプルコードは、左上隅のセルにアクセスして、文字列を挿入します。
+
Nell'esempio seguente viene creato un oggetto che fa riferimento alla cella superiore sinistra e viene inserito un testo nella cella:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 25: Line 24:
 
</source>
 
</source>
  
{{Documentation/Note|<tt>StarDesktop.CurrentComponent</tt> ''' 現在のコンポーネントを返します。'''·BASIC IDE で作業している場合、マクロを実行すると、BASIC IDE が返されます。BASIC IDE には表計算ドキュメントコンポーネントがないため、RunTime エラーが生成されます。
+
{{Note|<tt>StarDesktop.CurrentComponent</tt> restituisce il componente ''' corrente'''.  Se si lavora in BASIC IDE quando si esegue la macro, viene restituito il BASIC IDE.  Viene generato un errore di RunTime poiché per BASIC IDE non è presente un componente di foglio elettronico.
  
サンプルコードを保存し、表計算ドキュメントからマクロを実行します。詳細情報については、[[Documentation/BASIC_Guide/StarDesktop|「StarDe ktop」]] を参照してください。}}
+
Salvare il codice di esempio ed eseguire la macro da un foglio elettronico.  Per ulteriori informazioni vedere [[Documentation/BASIC_Guide/StarDesktop|StarDesktop]].}}
  
セルの参照は、こうした数字による座標指定だけではなく、名前による指定も可能で、たとえば表計算ドキュメントの左上隅のセル (0,0) は、<tt>A1</tt> セルとも呼ばれます。▼この場合のアルファベット <tt>A は列の位置を示し、数値 1 は行の位置を示します。</tt>▼このようなセル位置の参照方式を使い分ける際には、名前 ('''name''') 方式の行指定は 1 から始まり、位置 ('''position''') 方式の値は 0 から始まるので、両者を混同しないよう注意が必要です。
+
Oltre alle coordinate numeriche, a ogni cella di un foglio è assegnato un nome, ad esempio, la cella superiore sinistra (0,0) di un foglio elettronico è denominata <tt>A1</tt>. La lettera <tt>A</tt> rappresenta la colonna e il numero 1 la riga. È importante che il '''nome''' e la '''posizione'''di una cella non vengano confusi perché il conteggio delle righe per nomi inizia con 1 ma il conteggio per posizione inizia con 0.
  
{{OOo}} のセルには、テキスト、数値、数式のいずれかを入力でき、何も入力されていないものを空白セルと呼びます。▼セルの種類は、セルに入力する内容で規定されるのではなく、これらを入力する際に使用するオブジェクト属性により決まります。つまり数値を入力するには <tt>Value</tt> 属性、テキストを入力するには <tt>String</tt> 属性、数式を入力するには <tt>Formula 属性をそれぞれ使用します。</tt>
+
In {{OOo}}, una cella di tabella può essere vuota o contenere testo, numeri o formule. Il tipo di cella non è determinato dal contenuto salvato nella cella, bensì dalla proprietà dell'oggetto utilizzata per la sua immissione. I numeri possono essere inseriti e richiamati con la proprietà <tt>Value</tt>, il testo con la proprietà <tt>String</tt>
 +
e le formule con la proprietà <tt>Formula</tt>.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 51: Line 51:
 
</source>
 
</source>
  
▼このサンプルコードでは、A1 から A3 のセルに、それぞれ数値、テキスト、数式を入力しています。
+
L'esempio inserisce un numero, un testo e una formula nei campi da A1 a A3.
  
{{Documentation/Note|<tt>Value</tt><tt>String</tt><tt>Formula</tt> 属性は、セルの値を指定する <tt>PutCell</tt> メソッドに取って代わる存在となっています。}}
+
{{Note|Le proprietà <tt>Value</tt>, <tt>String</tt> e <tt>Formula</tt> sostituiscono il metodo <tt>PutCell</tt> per l'impostazione dei valori di una cella di tabella.}}
  
 
+
{{OOo}} tratta come testo il contenuto delle celle inserito utilizzando la proprietà <tt>String</tt>, anche se il contenuto è un numero. I numeri inseriti sono allineati a sinistra all'interno della cella anziché a destra. Osservare inoltre la differenza tra testo e numeri quando si utilizzano le formule:
                    仮に <tt>String</tt> 属性を用いて数値を入力した場合、{{OOo}} はこれをテキストとして扱います。▼たとえば、このような方法でセルに入力された数値は、右揃えではなく左揃えに\'95\'5c示されます。▼また数式を用いてテキストや数値を\'95\'5c示させた場合にも、同様の注意が必要です。
+
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 78: Line 77:
 
</source>
 
</source>
  
▼このサンプルコードを実行すると、A1 セルには 100、A2 セルには 1000 と\'95\'5c示されますが、A1+A2 という計算式の結果は 100 となります。▼こうなる原因は、A2 セルの値を数値ではなくテキストとして入力したためです。
+
Sebbene la cella A1 contenga il valore 100 e la cella A2 il valore 1000, la formula A1+A2 restituisce il valore 100, in quanto i contenuti della cella A2 erano stati immessi come stringa e non come numero.
  
セルの内容が数値であるか文字列であるかを確認するには、<tt>Type</tt> 属性を使用します。
+
Per controllare se i contenuti di una cella contengono un numero o una stringa, utilizzate la proprietà <tt>Type</tt>:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 105: Line 104:
 
</source>
 
</source>
  
<tt>Cell.Type</tt> 属性を使うと、セルの内容の種類を示す <idl>com.sun.star.table.CellContentType</idl> の値を取得できます。▼返される値は、以下のいずれかです。
+
La proprietà <tt>Cell.Type</tt> restituisce un valore per l'enumerazione <idl>com.sun.star.table.CellContentType</idl> che identifica il tipo di contenuti di una cella. Sono ammessi i seguenti valori:
  
;<tt>EMPTY</tt>:値なし
+
;<tt>EMPTY</tt>:Nessun valore
;<tt>VALUE</tt>:数値
+
;<tt>VALUE</tt>:Numero
;<tt>TEXT</tt>:文字列
+
;<tt>TEXT</tt>:Stringhe
;<tt>FORMULA</tt>:数式
+
;<tt>FORMULA</tt>:Formula
  
==▼セルの\'91\'7d入、削除、コピー、移動==
+
== Inserimento, eliminazione, copia e spostamento delle celle ==
  
<Check Alignment of PHs>▼  Calc には、セルの内容を直接編集する以外にも、セルの\'91\'7d入、削除、コピー、移動を行うためのインターフェースが用意されています。{{OOo}}このインターフェース (<idl>com.sun.star.sheet.XRangeMovement</idl>) は、表計算ドキュメントオブジェクトを通じて利用するもので、セルの内容を操作するために 4 種類のメソッドを提供しています。
+
Oltre a modificare direttamente il contenuto delle celle, {{OOo}} Calc fornisce anche un'interfaccia che permette di inserire, eliminare, copiare o unire le celle. L'interfaccia (<idl>com.sun.star.sheet.XRangeMovement</idl>) è disponibile tramite l'oggetto foglio elettronico e fornisce quattro metodi per modificare il contenuto delle celle.
  
<tt>insertCell</tt> メソッドは、セルを表計算ドキュメントに挿入する際に使用します。
+
Il metodo <tt>insertCell</tt> è utilizzato per inserire le celle in un foglio.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 135: Line 134:
 
</source>
 
</source>
  
▼このサンプルコードは、\'95\'5c計算ドキュメントの最初のシート (インデックス値 0) の第 2 列と第 2 行の位置 (インデックス値はともに 1) に、2 行 2 列分のセル範囲を\'91\'7d入します。▼また\'91\'7d入位置にある既存のセルは、その内容ごと下方に移動しています。
+
Questo esempio inserisce un intervallo di celle di dimensioni pari a due righe per due colonne nella seconda colonna e riga (ciascuna reca il numero 1) del primo foglio (numero 0) nel foglio elettronico. I valori già esistenti nell'intervallo di celle specificato vengono quindi spostati al di sotto di esso.
  
挿入するセル範囲を指定するには、<idl>com.sun.star.table.CellRangeAddress</idl> 構造体を使用します。▼この\'8d\'5c造体には、以下の値を設定できます。
+
Per definire l'intervallo di celle da inserire, utilizzate la struttura <idl>com.sun.star.table.CellRangeAddress</idl>.  I valori seguenti sono inclusi in questa struttura:
  
;<tt>Sheet (short)</tt>: シート番号 (開始値は 0)
+
;<tt>Sheet (short)</tt>:Numero del foglio (la numerazione inizia da 0).
;<tt>StartColumn (long)</tt>: セル範囲の先頭列 (開始値は 0)
+
;<tt>StartColumn (long)</tt>:La prima colonna nell'intervallo di celle (la numerazione inizia da 0).
;<tt>StartRow (long)</tt>: セル範囲の先頭行 (開始値は 0)
+
;<tt>StartRow (long)</tt>:La prima riga nell'intervallo di celle (la numerazione inizia da 0).
;<tt>EndColumn (long)</tt>: セル範囲の最終列 (開始値は 0)
+
;<tt>EndColumn (long)</tt>:La colonna finale nell'intervallo di celle (la numerazione inizia da 0).
;<tt>EndRow (long)</tt>: セル範囲の最終行 (開始値は 0)
+
;<tt>EndRow (long)</tt>:La riga finale nell'intervallo di celle (la numerazione inizia da 0).
  
これらの設定の終了した <tt>CellRangeAddress</tt> 構造体は、<tt>insertCells</tt> メソッドの第 1 パラメータとして渡します。<tt>insertCells</tt> メソッドの第 2 パラメータには、セル範囲の挿入位置にある既存セルの処置を指定するため、<idl>com.sun.star.sheet.CellInsertMode</idl> の値を渡します。▼この <tt>CellInsertMode</tt> には、以下の値が用意されています。
+
La struttura <tt>CellRangeAddress</tt> completata deve essere trasmessa come primo parametro al metodo <tt>insertCells</tt>. Il secondo parametro di <tt>insertCells</tt> contiene un valore dell'enumerazione <idl>com.sun.star.sheet.CellInsertMode</idl> e definisce cosa fare con i valori situati davanti al punto di inserimento. L'enumerazione <tt>CellInsertMode</tt> riconosce i valori seguenti:
  
;<tt>NONE</tt>: 挿入前の値を、その位置にとどめます。
+
;<tt>NONE</tt>:I valori correnti rimangono nella loro attuale posizione.
;<tt>DOWN</tt>: 挿入位置にあるセルを、下に移動します。
+
;<tt>DOWN</tt>:Le celle in corrispondenza della posizione di inserimento e sotto di esso
;<tt>RIGHT</tt>: 挿入位置にあるセルを、右に移動します。
+
sono spostate verso il basso.
;<tt>ROWS</tt>: 挿入位置にある行全体を、下に移動します。
+
;<tt>RIGHT</tt>:Le celle in corrispondenza della posizione di inserimento e alla sua destra vengono spostate verso destra.
;<tt>COLUMNS</tt>: 挿入位置にある列全体を、右に移動します。
+
;<tt>ROWS</tt>:Le righe dopo la posizione di inserimento vengono spostate verso il basso.
 +
;<tt>COLUMNS</tt>:Le colonne dopo la posizione di inserimento vengono spostate verso destra.
  
<tt>removeRange</tt> メソッドは、<tt>insertCells</tt> メソッドと逆の機能を担っています。▼このメ\'83\'5cッドは、<tt>CellRangeAddress</tt> \'8d\'5c造体で指定したセル範囲を、スプレッドシートから削除します。
+
Il metodo <tt>removeRange</tt> è la controparte del metodo <tt>insertCells</tt>. Elimina l'intervallo definito nella struttura <tt>CellRangeAddress</tt> dalla tabella.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 172: Line 172:
 
</source>
 
</source>
  
このサンプルコードでは、<tt>B2:C3</tt> のセル範囲をシートから削除して、該当範囲の下方にあるセルを上に 2 行分移動させています。削除に伴い周囲のセルをどう処理するかは、以下の <idl>com.sun.star.sheet.CellDeleteMode</idl> の値により指定します。
+
Questo esempio rimuove l'intervallo di celle <tt>B2:C3</tt> dalla tabella, quindi sposta verso l'alto le celle sottostanti di due righe. Il tipo di rimozione è definito da uno dei valori seguenti dall'enumerazione <idl>com.sun.star.sheet.CellDeleteMode</idl>:
  
;<tt>NONE</tt>: 削除前の値を、その位置にとどめます。
+
;<tt>NONE</tt>:I valori correnti rimangono nella attuale posizione.
;<tt>UP</tt>: 該当範囲の下側にあるセルを上に移動します。
+
;<tt>UP</tt>:Le celle in corrispondenza della posizione di inserimento vengono spostate verso l'alto.
;<tt>LEFT</tt>: 該当範囲の右側にあるセルを左に移動します。
+
;<tt>LEFT</tt>:Le celle in corrispondenza della posizione di inserimento e alla sua destra
;<tt>ROWS</tt>: 該当範囲の下側にある行全体を、上に移動します。
+
vengono spostate verso sinistra.
;<tt>COLUMNS</tt>: 該当範囲の右側にある列全体を、左に移動します。
+
;<tt>ROWS</tt>:Le righe dopo la posizione di inserimento vengono spostate verso l'alto.
 +
;<tt>COLUMNS</tt>:le colonne dopo la posizione di inserimento vengono spostate verso sinistra.
  
<tt>XRangeMovement</tt> インターフェースには、セル範囲の移動 (<tt>moveRange</tt>) およびコピー (<tt>copyRange</tt>) 処理用に、2 つの追加メソッドが用意されています。以下のサンプルコードでは、<tt>B2:C3</tt> のセル範囲を、<tt>A6</tt> の位置へ移動します。
+
L'interfaccia <tt>XRangeMovement</tt> offre due ulteriori metodi per spostare (<tt>moveRange</tt>) o copiare (<tt>copyRange</tt>) gli intervalli di celle. L'esempio seguente sposta l'intervallo <tt>B2:C3</tt> in modo
 +
da farlo iniziare alla posizione <tt>A6</tt>:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 204: Line 206:
 
</source>
 
</source>
  
<tt>CellRangeAdress</tt> メソッドを使用する場合は、<tt>moveRange</tt> 構造体の指定以外にも、<idl>com.sun.star.table.CellAddress</idl> 構造体によるセル範囲の移動先も指定する必要があります。▼<tt>CellAddress</tt> には、以下の値を設定できます。
+
Oltre alla struttura <tt>CellRangeAdress</tt>, il metodo <tt>moveRange</tt> prevede una struttura <idl>com.sun.star.table.CellAddress</idl>per definire l'origine della regione di destinazione dello spostamento. Il metodo <tt>CellAddress</tt> fornisce i seguenti valori:
  
;<tt>Sheet (short)</tt>: 表計算ドキュメント番号 (開始値は 0)
+
;<tt>Sheet (short)</tt>:Numero del foglio elettronico (la numerazione inizia da 0).
;<tt>Column (long)</tt>: 移動先の列位置 (開始値は 0)
+
;<tt>Column (long)</tt>:Numero della colonna identificata (la numerazione inizia da 0).
;<tt>Row (long)</tt>: 移動先の行位置 (開始値は 0)
+
;<tt>Row (long)</tt>:Numero della riga identificata (la numerazione inizia da 0).
  
<tt>moveRange</tt> メソッドを使用した場合、移動先のセルの内容は常に上書きされます。▼<tt>InsertCells</tt> メ\'83\'5cッドの場合とは異なり、<tt>removeRange</tt> メ\'83\'5cッドには、移動先のセルを自動的に移動させるパラメータは用意されていません。
+
I contenuti della cella nell'intervallo di destinazione vengono sempre sovrascritti dal metodo <tt>moveRange</tt>. A differenza del metodo <tt>InsertCells</tt>, nel metodo <tt>removeRange</tt> non è fornito un parametro per l'esecuzione degli spostamenti automatici.
  
<tt>copyRange</tt> メソッドの使用法は <tt>moveRange</tt> メソッドと同様ですが、<tt>copyRange</tt> の場合はセル範囲の移動ではなくコピーを行うという相違点があります。
+
Il metodo copyRange</tt> funziona allo stesso modo del metodo <tt><tt>moveRange</tt>, eccetto che <tt>copyRange</tt> inserisce una copia dell'intervallo di celle invece di spostarle.
  
{{Documentation/Note|機能面から見た場合、{{OOo}} Basic <tt>insertCell</tt><tt>removeRange</tt><tt>copyRange</tt> の各メソッドは、VBA の <tt>Range.Insert</tt><tt>Range.Delete</tt><tt>Range.Copy</tt> メソッドにそれぞれ相当します。ただし、これらの VBA のメソッドは該当する <tt>Range</tt> オブジェクトを対象とするのに対して、{{OOo}} Basic のメソッドは <tt>Sheet</tt> オブジェクトを対象とします。}}
+
{{Note|In termini di funzionalità, i metodi {{OOo}} Basic <tt>insertCell</tt>, <tt>removeRange</tt> e <tt>copyRange</tt> sono paragonabili ai metodi <tt>Range.Insert</tt>, <tt>Range.Delete</tt> e <tt>Range.Copy</tt> di VBA. In VBA, però, i metodi sono applicati all'oggetto <tt>Range</tt> corrispondente, mentre in {{OOo}} Basic sono applicati all'oggetto <tt>Sheet</tt> associato.}}
  
 
{{PDL1}}
 
{{PDL1}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Cells and Ranges}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Cells and Ranges}}

Latest revision as of 14:44, 6 July 2018

Template:EN/Documentation/BASICGuideTOC/v2


Un foglio elettronico è costituito da un elenco bidimensionale contenente le celle. Ogni cella è definita dalla sua posizione X e Y rispetto alla cella superiore sinistra che ha la posizione (0,0).

Nell'esempio seguente viene creato un oggetto che fa riferimento alla cella superiore sinistra e viene inserito un testo nella cella:

Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object   
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
 
Cell = Sheet.getCellByPosition(0, 0)
Cell.String = "Test"
Documentation note.png StarDesktop.CurrentComponent restituisce il componente corrente. Se si lavora in BASIC IDE quando si esegue la macro, viene restituito il BASIC IDE. Viene generato un errore di RunTime poiché per BASIC IDE non è presente un componente di foglio elettronico.

Salvare il codice di esempio ed eseguire la macro da un foglio elettronico. Per ulteriori informazioni vedere StarDesktop.

Oltre alle coordinate numeriche, a ogni cella di un foglio è assegnato un nome, ad esempio, la cella superiore sinistra (0,0) di un foglio elettronico è denominata A1. La lettera A rappresenta la colonna e il numero 1 la riga. È importante che il nome e la posizionedi una cella non vengano confusi perché il conteggio delle righe per nomi inizia con 1 ma il conteggio per posizione inizia con 0.

In Apache OpenOffice, una cella di tabella può essere vuota o contenere testo, numeri o formule. Il tipo di cella non è determinato dal contenuto salvato nella cella, bensì dalla proprietà dell'oggetto utilizzata per la sua immissione. I numeri possono essere inseriti e richiamati con la proprietà Value, il testo con la proprietà String

e le formule con la proprietà Formula.

Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object   
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
 
Cell = Sheet.getCellByPosition(0, 0)
Cell.Value = 100
 
Cell = Sheet.getCellByPosition(0, 1)
Cell.String = "Test"
 
Cell = Sheet.getCellByPosition(0, 2)
Cell.Formula = "=A1"

L'esempio inserisce un numero, un testo e una formula nei campi da A1 a A3.

Documentation note.png Le proprietà Value, String e Formula sostituiscono il metodo PutCell per l'impostazione dei valori di una cella di tabella.

Apache OpenOffice tratta come testo il contenuto delle celle inserito utilizzando la proprietà String, anche se il contenuto è un numero. I numeri inseriti sono allineati a sinistra all'interno della cella anziché a destra. Osservare inoltre la differenza tra testo e numeri quando si utilizzano le formule:

Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
 
Cell = Sheet.getCellByPosition(0, 0)
Cell.Value = 100
 
Cell = Sheet.getCellByPosition(0, 1)
Cell.String = 1000
 
Cell = Sheet.getCellByPosition(0, 2)
Cell.Formula = "=A1+A2"
 
MsgBox Cell.Value

Sebbene la cella A1 contenga il valore 100 e la cella A2 il valore 1000, la formula A1+A2 restituisce il valore 100, in quanto i contenuti della cella A2 erano stati immessi come stringa e non come numero.

Per controllare se i contenuti di una cella contengono un numero o una stringa, utilizzate la proprietà Type:

Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(1,1)
 
Cell.Value = 1000
 
Select Case Cell.Type 
Case com.sun.star.table.CellContentType.EMPTY 
   MsgBox "Content: Empty"
Case com.sun.star.table.CellContentType.VALUE
   MsgBox "Content: Value"
Case com.sun.star.table.CellContentType.TEXT
   MsgBox "Content: Text"
Case com.sun.star.table.CellContentType.FORMULA
   MsgBox "Content: Formula"
End Select

La proprietà Cell.Type restituisce un valore per l'enumerazione com.sun.star.table.CellContentType che identifica il tipo di contenuti di una cella. Sono ammessi i seguenti valori:

EMPTY
Nessun valore
VALUE
Numero
TEXT
Stringhe
FORMULA
Formula

Inserimento, eliminazione, copia e spostamento delle celle

Oltre a modificare direttamente il contenuto delle celle, Apache OpenOffice Calc fornisce anche un'interfaccia che permette di inserire, eliminare, copiare o unire le celle. L'interfaccia (com.sun.star.sheet.XRangeMovement) è disponibile tramite l'oggetto foglio elettronico e fornisce quattro metodi per modificare il contenuto delle celle.

Il metodo insertCell è utilizzato per inserire le celle in un foglio.

Dim Doc As Object
Dim Sheet As Object
Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
 
CellRangeAddress.Sheet = 0
CellRangeAddress.StartColumn = 1
CellRangeAddress.StartRow = 1
CellRangeAddress.EndColumn = 2
CellRangeAddress.EndRow = 2
 
Sheet.insertCells(CellRangeAddress, com.sun.star.sheet.CellInsertMode.DOWN)

Questo esempio inserisce un intervallo di celle di dimensioni pari a due righe per due colonne nella seconda colonna e riga (ciascuna reca il numero 1) del primo foglio (numero 0) nel foglio elettronico. I valori già esistenti nell'intervallo di celle specificato vengono quindi spostati al di sotto di esso.

Per definire l'intervallo di celle da inserire, utilizzate la struttura com.sun.star.table.CellRangeAddress. I valori seguenti sono inclusi in questa struttura:

Sheet (short)
Numero del foglio (la numerazione inizia da 0).
StartColumn (long)
La prima colonna nell'intervallo di celle (la numerazione inizia da 0).
StartRow (long)
La prima riga nell'intervallo di celle (la numerazione inizia da 0).
EndColumn (long)
La colonna finale nell'intervallo di celle (la numerazione inizia da 0).
EndRow (long)
La riga finale nell'intervallo di celle (la numerazione inizia da 0).

La struttura CellRangeAddress completata deve essere trasmessa come primo parametro al metodo insertCells. Il secondo parametro di insertCells contiene un valore dell'enumerazione com.sun.star.sheet.CellInsertMode e definisce cosa fare con i valori situati davanti al punto di inserimento. L'enumerazione CellInsertMode riconosce i valori seguenti:

NONE
I valori correnti rimangono nella loro attuale posizione.
DOWN
Le celle in corrispondenza della posizione di inserimento e sotto di esso

sono spostate verso il basso.

RIGHT
Le celle in corrispondenza della posizione di inserimento e alla sua destra vengono spostate verso destra.
ROWS
Le righe dopo la posizione di inserimento vengono spostate verso il basso.
COLUMNS
Le colonne dopo la posizione di inserimento vengono spostate verso destra.

Il metodo removeRange è la controparte del metodo insertCells. Elimina l'intervallo definito nella struttura CellRangeAddress dalla tabella.

Dim Doc As Object
Dim Sheet As Object
Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
 
CellRangeAddress.Sheet = 0
CellRangeAddress.StartColumn = 1
CellRangeAddress.StartRow = 1
CellRangeAddress.EndColumn = 2
CellRangeAddress.EndRow = 2
 
Sheet.removeRange(CellRangeAddress, com.sun.star.sheet.CellDeleteMode.UP)

Questo esempio rimuove l'intervallo di celle B2:C3 dalla tabella, quindi sposta verso l'alto le celle sottostanti di due righe. Il tipo di rimozione è definito da uno dei valori seguenti dall'enumerazione com.sun.star.sheet.CellDeleteMode:

NONE
I valori correnti rimangono nella attuale posizione.
UP
Le celle in corrispondenza della posizione di inserimento vengono spostate verso l'alto.
LEFT
Le celle in corrispondenza della posizione di inserimento e alla sua destra

vengono spostate verso sinistra.

ROWS
Le righe dopo la posizione di inserimento vengono spostate verso l'alto.
COLUMNS
le colonne dopo la posizione di inserimento vengono spostate verso sinistra.

L'interfaccia XRangeMovement offre due ulteriori metodi per spostare (moveRange) o copiare (copyRange) gli intervalli di celle. L'esempio seguente sposta l'intervallo B2:C3 in modo da farlo iniziare alla posizione A6:

Dim Doc As Object
Dim Sheet As Object
Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress
Dim CellAddress As New com.sun.star.table.CellAddress
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
 
CellRangeAddress.Sheet = 0
CellRangeAddress.StartColumn = 1
CellRangeAddress.StartRow = 1
CellRangeAddress.EndColumn = 2
CellRangeAddress.EndRow = 2
 
CellAddress.Sheet = 0
CellAddress.Column = 0
CellAddress.Row = 5
 
Sheet.moveRange(CellAddress, CellRangeAddress)

Oltre alla struttura CellRangeAdress, il metodo moveRange prevede una struttura com.sun.star.table.CellAddressper definire l'origine della regione di destinazione dello spostamento. Il metodo CellAddress fornisce i seguenti valori:

Sheet (short)
Numero del foglio elettronico (la numerazione inizia da 0).
Column (long)
Numero della colonna identificata (la numerazione inizia da 0).
Row (long)
Numero della riga identificata (la numerazione inizia da 0).

I contenuti della cella nell'intervallo di destinazione vengono sempre sovrascritti dal metodo moveRange. A differenza del metodo InsertCells, nel metodo removeRange non è fornito un parametro per l'esecuzione degli spostamenti automatici.

Il metodo copyRange</tt> funziona allo stesso modo del metodo <tt>moveRange, eccetto che copyRange inserisce una copia dell'intervallo di celle invece di spostarle.

Documentation note.png In termini di funzionalità, i metodi Apache OpenOffice Basic insertCell, removeRange e copyRange sono paragonabili ai metodi Range.Insert, Range.Delete e Range.Copy di VBA. In VBA, però, i metodi sono applicati all'oggetto Range corrispondente, mentre in Apache OpenOffice Basic sono applicati all'oggetto Sheet associato.
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools