[gelöst] Calc Makro: cell innerhalb cellrange?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

[gelöst] Calc Makro: cell innerhalb cellrange?

Beitrag von F3K Total »

Hallo zusammen,
in folgendem Beitrag: viewtopic.php?f=2&t=47938 habe ich ein Makro geschrieben, das die Uhrzeit in die gerade selektierte Zelle schreibt.

Code: Alles auswählen

Sub Insert_Time
osheet=thiscomponent.sheets(0)
ocellrange=osheet.getCellRangeByName("B2:F50")
oAddresses=ocellrange.rangeaddress
oview=thiscomponent.CurrentController
ocell=oView.getSelection
oCelladdress=ocell.cellAddress
if oCelladdress.Column>=oAddresses.StartColumn and oCelladdress.Column<=oAddresses.EndColumn and oCelladdress.Row>=oAddresses.StartRow and oCelladdress.Row<=oAddresses.EndRow then
ocell.value=now()
endif
End Sub
Um sicherzustellen, dass diese Uhrzeit nur in die gewünschten Zellen geschrieben werden kann, habe ich mit diesem Code:

Code: Alles auswählen

oCelladdress=ocell.cellAddress
if oCelladdress.Column>=oAddresses.StartColumn and oCelladdress.Column<=oAddresses.EndColumn and oCelladdress.Row>=oAddresses.StartRow and oCelladdress.Row<=oAddresses.EndRow then
ocell.value=now()
endif
die zu beschreibenden Zellen auf "B2" bis "F50" beschränkt. Die vierfach Bedingung finde ich zu umständlich, wußte mir aber nicht besser zu helfen. Hat jemand eine Idee wie man das geschickter machen kann?
Gibt es eine Funktion wie ist die Zelle "ocell" Teilmenge von "ocellrange"?

Gruß R
Zuletzt geändert von F3K Total am Sa, 16.04.2011 10:10, insgesamt 1-mal geändert.
Axel Richter
****
Beiträge: 159
Registriert: So, 17.10.2010 16:54

Re: Calc Makro: cell innerhalb cellrange?

Beitrag von Axel Richter »

Hallo,
F3K Total hat geschrieben:Gibt es eine Funktion wie ist die Zelle "ocell" Teilmenge von "ocellrange"?
Es gibt so etwas ähnliches, nämlich: Gib die Überschneidung von Range1 und Range2.
http://api.openoffice.org/docs/common/r ... tersection.

Wenn es keine Überschneidung gibt, dann ist die Zelle nicht im Range.

Code: Alles auswählen

Sub Insert_Time()
oSheet = ThisComponent.Sheets(0)
oCellRange = oSheet.getCellRangeByName("B2:F50")
oSelection = ThisComponent.CurrentSelection
if oSelection.supportsService("com.sun.star.sheet.SheetCell") then
 oCellsRangeAddress = oSelection.RangeAddress
 if not (oCellRange.queryIntersection(oCellsRangeAddress).RangeAddressesAsString = "") then
  oSelection.Value = now()
 endif
endif
End Sub
viele Grüße

Axel
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Calc Makro: cell innerhalb cellrange?

Beitrag von F3K Total »

Hallo Axel,
super, vielen Dank. :D Da wäre ich niemals drauf gekommen, denn mit "Query" verband ich bis dato immer SQL. :?
An "supportsservice" habe ich nicht gedacht :o , denke das verhindert eine Fehlermeldung falls etwas anderes als eine Zelle ausgewählt wurde? Klasse!
Per XRAY habe ich noch herausgefunden, dass auch .count abfragbar ist, daher den Code noch etwas verändert:

Code: Alles auswählen

if oCellRange.queryIntersection(oCellsRangeAddress).count = 1 then 'Es gibt ocell in ocellrange, sonst wäre .count = 0
viele Grüsse von Rik
Antworten