openoffice-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Wolfgang Jäth <jawo.ml.hams...@arcor.de>
Subject Re: [Basic] getCellRangeByName & Teilbereich ausschließen
Date Sat, 27 Jun 2020 11:12:09 GMT
Am 27.06.2020 um 10:20 schrieb Jörg Schmidt:
> 
> z.B. ginge:
> 
> Dim x(1)
> bereiche = ThisComponent.CreateInstance("com.sun.star.sheet.SheetCellRanges")
> blatt = ThisComponent.CurrentController.ActiveSheet
> x(0) = "P2:X13"
> x(1) = "M5:O13"
> For i = LBOUND(x()) To UBOUND(x())
> 	bereiche.addRangeAddress(blatt.getCellRangeByName(x(i)).getRangeAddress(), False)
> Next i
> bereiche.clearContents(com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.STRING)

Ja, das ginge vermutlich. Die Frage hat sich aber inzwischen etwas
überholt (wollte ich gerade schreiben, da hab ich diene Antwort
gesehen). Von dem "clearContents" bin ich wieder ab gekommen.
Stattdessen Greife ich jetzt folgendermaßen auf den Bereich zu:

| aCellrange = oSheet.getCellRangeByName ("M2:X13")
| aLeft = aCellrange.getCellRangeByPosition (3, 0, 11,  2)
| aTop = aCellrange.getCellRangeByPosition  (0, 3,  2, 11)
| aData = aCellrange.getCellRangeByPosition (3, 3, 11, 11)

Die einzelnen Unterarrays (aLeft usw.) lösch ich halt jeweils separat
über FOR-Schleifen. Diese "Technik" brauch ich später sowieso wieder,
beim Befüllen. Aber auf diese Weise kann ich direkt in diesen
Unterarrays arbeiten, ohne lästiges hin- und herkopieren der Daten, v.
a. ohne die jeweiligen Indizes umständlich umzurechnen zu müssen, usw.
Das vereinfacht mir die Arbeit ungemein, und ich spar mir auach noch das
urnsprünglich geplante Arbeits-Array.

Trotzdem danke.

> Ich kann Dir hingegen nicht sagen, wie Du von "M2:X13" den Bereich "M2:O4" quasi abziehst,
weil es zwar die Methode .removeRangeAddress gibt, aber es bei mir zu einem Fehler führt
wenn ich versuche von einem CellRange-Objekt ein (quasi beinhaltetes) CellRange-Objekt 'abzuziehen'
- augenscheinlich wird ein passendes CellRange*s*-Objekt erwartet.

Über die Funktion bin ich auch gestolpert, aber wenn ich die
Beschreibung dazu richtig verstanden habe, entfernt das die Zellen
direkt aus dem Tabellenblatt, so wie "Bearbeiten => Zeilen löschen =>
(*) Zellen nach oben verschieben".

>> [1] ist etwas tricky, denn zuerst darf man nur STRG drücken, dann die
>> Maustaste, dann SHIFT, und dann kan man mit der Maus 
>> markieren (nur wers
>> nachvollziehen möchte)
> 
> Du kannst den gewünschten Selektionsmodus auch in der Statusleiste per Mausklick umschalten
(an der Stelle wo per Default "STD" steht)

Möglich; mir reicht es aber, wenn ich *eine* Methode kenne, die einfach
ist (Stichwort motorisches Gedächtnis) und funktioniert. Das reicht mir. :-)

Wenn ich da zu viel rumklicke, und mir so die Konfig "unkontrolliert"
(weil im Eifer des Gefechtes nicht darauf achtend) verändere, riskier
ich nur, dass nachher wieder mal gar nix mehr geht. Ich bin da ein etwas
gebranntes Kind (hab seinerzeit lang genug mit Suchen/Ersetzen und RegEx
oder nicht RegEx rum gemacht; seitdem hab ich mir angewöhnt, peinlich
darauf zu achten, vor Verlassen des Fensters grundsätzlich immer RegEx
wieder zu deaktivieren :-/).

Wolfgang
-- 
Donald Trump ist ein großer Visionär, der seiner Zeit weit voraus ist:
Er verbreitet schon jetzt den Slogan "make America great again", obwohl
dieser erst in der Ära /nach/ ihm seine volle Bedeutung entfalten wird.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Mime
View raw message