Difference between revisions of "NL/Documentation/BASIC Guide/Cells and Ranges"
Line 211: | Line 211: | ||
CelAdres.Sheet = 0 | CelAdres.Sheet = 0 | ||
CelAdres.Column = 0 | CelAdres.Column = 0 | ||
− | + | CelAdres.Row = 5 | |
Blad.moveRange(CelAdres, CelBereikAdres) | Blad.moveRange(CelAdres, CelBereikAdres) | ||
</source> | </source> | ||
− | In | + | In aanvulling op de structuur <tt>CellRangeAdress</tt> verwacht de methode <tt>moveRange</tt> een structuur <idl>com.sun.star.table.CellAddress</idl> om de plaats van herkomst van het te verplaatsen doelbereik te bepalen. De methode <tt>CellAddress</tt> verschaft de volgende waarden: |
− | ;<tt>Sheet (short)</tt>: | + | ;<tt>Sheet (short)</tt>:nummer van het blad (nummering begint met 0). |
− | ;<tt>Column (long)</tt>: | + | ;<tt>Column (long)</tt>:nummer van de geadresseerde kolom (nummering begint met 0). |
− | ;<tt>Row (long)</tt>: | + | ;<tt>Row (long)</tt>:nummer van de geadresseerde rij (nummering begint met 0). |
− | + | De celinhoud in het doelbereik wordt altijd overschreven door de methode <tt>moveRange</tt>. Anders dan in de methode <tt>InsertCells</tt> wordt een parameter voor het uitvoeren van automatische verplaatsingen in de methode <tt>moveRange</tt> niet verschaft. | |
− | + | De methode <tt>copyRange</tt> functioneert op dezelfde wijze als de methode <tt>moveRange</tt>, met als verschil dat <tt>copyRange</tt> een kopie van het celbereik invoegt in plaats van het te verplaatsen. | |
− | + | ||
− | + | ||
+ | {{Documentation/VBAnote|In termen van hun functies zijn de methoden <tt>insertCell</tt>, <tt>removeRange</tt> en <tt>copyRange</tt> van {{OOo}} BASIC te vergelijken met de methoden <tt>Range.Insert</tt>, <tt>Range.Delete</tt> en <tt>Range.Copy</tt> in VBA. Waar in VBA de methoden worden toegepast op het corresponderende object <tt>Range</tt>, worden zij in {{OOo}} BASIC toegepast op het geassocieerde object <tt>Sheet</tt>. | ||
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/Cells and Ranges}} | {{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/Cells and Ranges}} | ||
{{PDL1}} | {{PDL1}} |
Revision as of 13:59, 2 March 2013
Een werkbladdocument bestaat uit een tweedimensionale lijst die cellen bevat. Elke cel wordt gedefinieerd door zijn positie X en Y ten opzichte van de bovenste linker cel, die de positie (0,0) heeft.
Adresseren en bewerken van Individuele cellen
Het volgende voorbeeld maakt een object dat verwijst naar de bovenste linker cel en voegt een tekst in die cel in:
Dim Doc As Object Dim Blad As Object Dim Cel As Object Doc = ThisComponent Blad = Doc.Sheets(0) Cel = Blad.getCellByPosition(0, 0) Cel.String = "Test"
In aanvulling op de numerieke coördinaten heeft elke cel op een blad een naam, bijvoorbeeld, de bovenste linker cel (0,0) van een werkblad wordt A1 genoemd. De letter A staat voor de kolom en het nummer 1 voor de rij. Het is belangrijk dat de naam en positie van een cel niet worden verward omdat de telling van de rijnamen begint met 1 maar het tellen van de positie begint met 0.
Als de positie van de cel vast staat is het duidelijker om de volgende code te gebruiken:
Dim Doc As Object Dim Blad As Object Dim Cel As Object Doc = ThisComponent Blad = Doc.Sheets(0) Cel = Blad.getCellRangeByName("A1") Cel.String = "Test"
De bovenstaande code werkt ook met een benoemde cel.
In Apache OpenOffice mag een tabelcel leeg zijn of tekst, getallen of formules bevatten. Het celtype wordt niet bepaald door de inhoud die wordt opgeslagen in de cel, maar eerder door de object-eigenschap die werd gebruikt voor de invoer. Getallen kunnen worden ingevoegd en aangeroepen met de eigenschap Value, tekst met de eigenschap String en formules met de eigenschap Formula.
Dim Doc As Object Dim Blad As Object Dim Cel As Object Doc = ThisComponent Blad = Doc.Sheets(0) Cel = Blad.getCellByPosition(0, 0) Cel.Value = 100 Cel = Blad.getCellByPosition(0, 1) Cel.String = "Test" Cel = Blad.getCellByPosition(0, 2) Cel.Formula = "=A1"
Het voorbeeld voegt één getal, één tekst en één formule in in de velden A1 t/m A3.
StarOffice 5 : De eigenschappen Value, String en Formula hebben voorrang boven de oude methode PutCell van StarOffice 5 voor het instellen van de waarden van een tabelcel. |
Apache OpenOffice behandelt ingevoerde celinhoud met gebruik van de eigenschap String als tekst, zelfs als de inhoud een getal is. Getallen worden links uitgelijnd in de cel in plaats van uitgelijnd op rechts. U zou het verschil tussen tekst en formules ook moeten bemerken als u formules gebruikt:
Dim Doc As Object Dim Blad As Object Dim Cel As Object Doc = ThisComponent Blad = Doc.Sheets(0) Cel = Blad.getCellByPosition(0, 0) Cel.Value = 100 Cel = Blad.getCellByPosition(0, 1) Cel.String = 1000 Cel = Blad.getCellByPosition(0, 2) Cel.Formula = "=A1+A2" MsgBox Cel.Value
Hoewel cel A1 de waarde 100 bevat en cel A2 de waarde 1000, geeft de formule A1+A2 de waarde 100 weer. Dit komt omdat de inhoud van cel A2 werd ingevoerd als een tekenreeks en niet als een getal.
Gebruik de eigenschap Type om te controleren of een cel een tekenreeks of een getal bevat:
Dim Doc As Object Dim Blad As Object Dim Cel As Object Doc = ThisComponent Blad = Doc.Sheets(0) Cel = Blad.getCellByPosition(1,1) Cel.Value = 1000 Select Case Cel.Type Case com.sun.star.table.CellContentType.EMPTY MsgBox "Inhoud: Leeg" Case com.sun.star.table.CellContentType.VALUE MsgBox "Inhoud: Getal" Case com.sun.star.table.CellContentType.TEXT MsgBox "Inhoud: Tekst" Case com.sun.star.table.CellContentType.FORMULA MsgBox "Inhoud: Formule" End Select
De eigenschap Cel.Type geeft een waarde terug voor de opsomming com.sun.star.table.CellContentType die het type inhoud van een cel identificeert. De mogelijke waarden zijn:
- EMPTY
- geen waarde
- VALUE
- getal
- TEXT
- tekenreeksen
- FORMULA
- formule
Cellen invoegen, verwijderen, kopiëren en verplaatsen
In aanvulling op het direct bewerken van celinhoud, verschaft Apache OpenOffice Calc ook een interface die u in staat stelt om cellen in te voegen, te verwijderen, te kopiëren of samen te voegen. De interface (com.sun.star.sheet.XCellRangeMovement) is beschikbaar via het object werkbladdocument en verschaft vier methoden voor het bewerken van de inhoud van de cel.
De methode insertCell wordt gebruikt voor het invoegen van cellen in een blad.
Dim Doc As Object Dim Blad As Object Dim CelBereikAdres As New com.sun.star.table.CellRangeAddress Doc = ThisComponent Blad = Doc.Sheets(0) CelBereikAdres.Sheet = 0 CelBereikAdres.StartColumn = 1 CelBereikAdres.StartRow = 1 CelBereikAdres.EndColumn = 2 CelBereikAdres.EndRow = 2 Blad.insertCells(CelBereikAdres, com.sun.star.sheet.CellInsertMode.DOWN)
Dit voorbeeld voegt een celbereik van twee rijen en twee kolommen groot in in de tweede kolom en rij (elk draagt het nummer 1) van het eerste blad (nummer 0) in het werkblad. Elke bestaande waarde in het gespecificeerde celbereik wordt verplaatst naar beneden het bereik.
Gebruik de structuur com.sun.star.table.CellRangeAddress om het celbereik, dat u wilt invoegen, te definiëren. De volgende waarden zijn opgenomen in deze structuur:
- Sheet (short)
- nummer van het blad (nummering begint met 0).
- StartColumn (long)
- eerste kolom in het celbereik (nummering begint met 0).
- StartRow (long)
- eerst rij in het celbereik (nummering begint met 0).
- EndColumn (long)
- laatste kolom in het celbereik (nummering begint met 0).
- EndRow (long)
- laatste rij in het celbereik (nummering begint met 0).
De volledige structuur CellRangeAddress moet worden opgegeven als de eerste parameter aan methode insertCells. De tweede parameter van insertCells bevat een waarde uit de opsomming com.sun.star.sheet.CellInsertMode en definieert wat moet worden gedaan met de waarden die zijn geplaatst op de invoegpositie. De opsomming CellInsertMode herkent de volgende waarden:
- NONE
- de huidige waarden blijven op hun huidige positie.
- DOWN
- de cellen op en onder de positie van invoegen worden naar beneden verplaatst.
- RIGHT
- de cellen op en rechts van de positie van invoegen worden naar rechts verplaatst.
- ROWS
- de rijen onder de positie van invoegen worden naar beneden verplaatst.
- COLUMNS
- de kolommen na de positie van invoegen worden naar rechts verplaatst.
De methode removeRange is het tegenovergestelde van de methode insertCells. Deze methode verwijdert het bereik dat wordt gedefinieerd in de structuur CellRangeAddress uit het werkblad.
Dim Doc As Object Dim Sheet As Object Dim CelBereikAdres As New com.sun.star.table.CellRangeAddress Doc = ThisComponent Blad = Doc.Sheets(0) CelBereikAdres.Sheet = 0 CelBereikAdres.StartColumn = 1 CelBereikAdres.StartRow = 1 CelBereikAdres.EndColumn = 2 CelBereikAdres.EndRow = 2 Blad.removeRange(CelBereikAdres, com.sun.star.sheet.CellDeleteMode.UP)
Dit voorbeeld verwijdert het celbereik B2:C3 uit het blad en schuift dan de daaronder gelegen cellen twee rijen op. Het type van verwijdering wordt gedefinieerd door één van de volgende waarden uit de opsomming com.sun.star.sheet.CellDeleteMode:
- NONE
- de huidige waarden blijven op hun huidige positie.
- UP
- de cellen op en boven de positie van invoegen worden naar boven verplaatst.
- LEFT
- de cellen op en rechts van de positie van invoegen worden naar links verplaatst.
- ROWS
- de rijen onder de positie van invoegen worden naar boven verplaatst.
- COLUMNS
- de kolommen na de positie van invoegen worden naar links verplaatst.
De interface XRangeMovement verschaft twee aanvullende methoden voor verplaatsen (moveRange) of kopiëren (copyRange) van celbereiken. Het volgende voorbeeld verplaatst het bereik B2:C3 zodat het bereik begint op positie A6:
Dim Doc As Object Dim Blad As Object Dim CelBereikAdres As New com.sun.star.table.CellRangeAddress Dim CelAdres As New com.sun.star.table.CellAddress Doc = ThisComponent Blad = Doc.Sheets(0) CelBereikAdres.Sheet = 0 CelBereikAdres.StartColumn = 1 CelBereikAdres.StartRow = 1 CelBereikAdres.EndColumn = 2 CelBereikAdres.EndRow = 2 CelAdres.Sheet = 0 CelAdres.Column = 0 CelAdres.Row = 5 Blad.moveRange(CelAdres, CelBereikAdres)
In aanvulling op de structuur CellRangeAdress verwacht de methode moveRange een structuur com.sun.star.table.CellAddress om de plaats van herkomst van het te verplaatsen doelbereik te bepalen. De methode CellAddress verschaft de volgende waarden:
- Sheet (short)
- nummer van het blad (nummering begint met 0).
- Column (long)
- nummer van de geadresseerde kolom (nummering begint met 0).
- Row (long)
- nummer van de geadresseerde rij (nummering begint met 0).
De celinhoud in het doelbereik wordt altijd overschreven door de methode moveRange. Anders dan in de methode InsertCells wordt een parameter voor het uitvoeren van automatische verplaatsingen in de methode moveRange niet verschaft.
De methode copyRange functioneert op dezelfde wijze als de methode moveRange, met als verschil dat copyRange een kopie van het celbereik invoegt in plaats van het te verplaatsen.
{{Documentation/VBAnote|In termen van hun functies zijn de methoden insertCell, removeRange en copyRange van Apache OpenOffice BASIC te vergelijken met de methoden Range.Insert, Range.Delete en Range.Copy in VBA. Waar in VBA de methoden worden toegepast op het corresponderende object Range, worden zij in Apache OpenOffice BASIC toegepast op het geassocieerde object Sheet.
Content on this page is licensed under the Public Documentation License (PDL). |