Hallo,
> -----Original Message-----
> From: Wolfgang Jäth [mailto:[email protected]]
> Sent: Friday, June 26, 2020 6:56 PM
> To: [email protected]
> Subject: [Basic] getCellRangeByName & Teilbereich ausschließen
>
> Hi,
>
> ich hab folgendes Problemche: In einem Makro möchte ich einen
> bestimmten
> Zellbereich löschen, davon jedoch ein paar Zellen innerhalb dieses
> Bereiches ausnehmen. Bislang hab ich folgendes:
>
> | Dim oSheet, oCellRange As Object
> | oSheet = thisComponent.getCurrentController.getActiveSheet
> | oCellRange = oSheet.getCellRangeByName ("M2:X13")
> | oCell.clearContents (com.sun.star.sheet.CellFlags.VALUE +
> com.sun.star.sheet.CellFlags.STRING)
>
> Das klappt soweit auch, nur dass ich halt gerne den Inhalt
> des Bereichs
> M2:O4 (statische Informationen) stehen lassen möchte.
>
> Bei der direkten Bedienung kann ich ja auch den Bereich M2:X13 mit der
> Maus mmarkieren, und dann mit gedrückter Tastenkombination STRG-SHIFT
> [1] den Bereich M2:O4 wieder aus der Markierung heraus
> nehmen. Genau so
> was stelle ich mir vor, nur im Makro. Geht das, bzw. kann mir jemand
> sagen, wie?
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)
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.
> Als allerletzter Ausweg könnte ich mir zwar ne Lösung vorstellen, bei
> der ich den auszusparenden Bereich vorher kopiere, und nachher wieder
> einfüge,
in jedem Falle geht doch:
alle = Array("P2:X13", "M5:O13")
oSheet = thisComponent.getCurrentController.getActiveSheet
For i = 0 To 1
oCellRange = oSheet.getCellRangeByName(alle(i))
oCellRange.clearContents (com.sun.star.sheet.CellFlags.VALUE +
com.sun.star.sheet.CellFlags.STRING)
Next i
schreib es so, dann ist es schön kompakt:
alle = Array("P2:X13", "M5:O13")
tcas = ThisComponent.CurrentController.ActiveSheet
For i = 0 To 1
tcas.getCellRangeByName(alle(i)).clearContents(5)
Next i
> [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)
Gruß
Jörg
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]