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

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] Calc Makro: cell innerhalb cellrange?

Re: Calc Makro: cell innerhalb cellrange?

von F3K Total » Sa, 16.04.2011 09:10

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

Re: Calc Makro: cell innerhalb cellrange?

von Axel Richter » Sa, 16.04.2011 07:37

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

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

von F3K Total » Do, 14.04.2011 21:03

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

Nach oben