[gelöst] Calc Funktion Zeilenhöhe in Zelle ausgeben

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

Moderator: Moderatoren

msxport
*
Beiträge: 13
Registriert: Mi, 24.08.2011 11:08

[gelöst] Calc Funktion Zeilenhöhe in Zelle ausgeben

Beitrag von msxport »

Hallo,

habe folgende Funktion zur Ausgabe der Höhe einer Zeile in eine Zelle geschrieben:
(AOO 3.4)

Code: Alles auswählen

Function ufgetZeilenhoehe As Long
Dim oDoc As Object    
oDoc = ThisComponent  
If oDoc.SupportsService("com.sun.star.sheet.SpreadsheetDocument") Then
   ufgetZeilenhoehe = oDoc.getCurrentSelection().getRows().height
End If
End Function
Wenn ich den Funktionsaufruf (=ufgetZeilenhoehe()) nun einzeln in eine Zelle einer Zeile einfüge wird das richtige Ergebnis zurückgeliefert. Kopiere ich eine Zelle die den Funktionsaufruf beinhaltet in mehrere Zellen untereinander, erscheint immer das gleiche Ergebnis, egal wie hoch die Zeilen sind, in die einkopiert wird. Meiner Meinung müsste dies an "getCurrentSelection" liegen, da die Funktion immer die Zelle (Zeile) zugrunde liegt, von der wegkopiert und nicht die Zelle (Zeile) in die einkopiert wird.
Gibt eine Möglichkeit dies zu lösen?

MfG
Markus
Zuletzt geändert von msxport am Fr, 25.05.2012 10:45, insgesamt 1-mal geändert.
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Calc Funktion Zeilenhöhe in Zelle ausgeben

Beitrag von balu »

Hallo Markus,

könnte es vielleicht sein das Du noch die Tastenkombi "Strg" & "Shift" & "F9" drücken musst?
Ansonsten kann ich dir eine Alternative anbieten, die von unserem Forummitglied Karolus stammt.

Code: Alles auswählen

Function ZEILENH( aktTabelle as INTEGER, aktZeile as LONG )
ZEILENH = ThisComponent.Sheets().getByIndex( aktTabelle - 1 ).Rows().getByIndex( aktZeile - 1 ).Height
End FUNCTION
Aufgerufen wird sie dann wie folgt, und zwar genau so wie sie da steht.

Code: Alles auswählen

=ZEILENH(TABELLE();ZEILE())

Und nun noch das ganze für die Spaltenbreite.

Code: Alles auswählen

Function SPALTEB( aktTabelle as INTEGER, aktSpalte as LONG )
SPALTEB = ThisComponent.Sheets().getByIndex( aktTabelle - 1 ).Columns().getByIndex( aktSpalte - 1 ).Width
End FUNCTION

Code: Alles auswählen

=SPALTEB(TABELLE();SPALTE())
Am besten fügst Du die beiden Functionen in einem Modul in "[Meine Makros & Dialoge].Standard" ein.

Halt Stop!
Ich habe mal eben deine Function in die eben genannte Bibliothek in ein Modul eingefügt und kann keine Probleme feststellen. Dein beobachtetes Fehlverhalten kann ich nicht reproduzieren. OOo 3.2.1 und AOO 3.4.0



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
theindless
*****
Beiträge: 355
Registriert: So, 09.05.2010 12:37

Re: Calc Funktion Zeilenhöhe in Zelle ausgeben

Beitrag von theindless »

Hallo,

@balu
ich hatte die Funktion von Markus auch getestet und diese hat nur eingeschränkt funktioniert.

Wenn ich diese mit Strg+C/Strg+V um eine Zeile nach unten kopiert hatte, hat es funktioniert.
Wenn ich diese mit Strg+C/Strg+V in mehrere Zeilen nach unten kopiert hatte, dann nicht.
Wenn ich Sie mit der Maus "nach unten gezogen" hatte, dann hatte es nicht funktioniert.

getestet mit
Windows Vista und OpenOffice 3.3.0

theindless
Lernbegieriger Nutzer mit (hoffentlich) steigendem Wissen
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Calc Funktion Zeilenhöhe in Zelle ausgeben

Beitrag von Karolus »

Hallo
Die Funktion von Markus gibt bei jeder Neuberechnung die Höhe der gerade aktuellen Selektion aus - völlig unabhängig davon in welcher Zelle die Funktion steht.
Und nun noch das ganze für die Spaltenbreite.
Für die Spaltenbreite gibts die "eingebaute" Funktion:

Code: Alles auswählen

=ZELLE("Width") 
allerdings verwendet die eine andere Masseinheit

Ps. Laut Balu ist die Funktion von mir, trotzdem muss ich etwas korrigieren:
In der Funktionssignatur steht: aktZeile as LONG sinnvoller wäre: aktZeile as INTEGER

PPs. Die Funktion ist gar nicht von mir, die entstammt Winfrieds Feder.

Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Calc Funktion Zeilenhöhe in Zelle ausgeben

Beitrag von balu »

Hallo Leute,
Karolus hat geschrieben: Die Funktion ist gar nicht von mir, die entstammt Winfrieds Feder.
Oh wie schmerzlich Peinlich! Da hatte ich gestern abend vor lauter Kreuzschmerzen etwas durcheinander geworfen. Sogar doppel Peinlich, da der Thread von mir stammte. Entschuldigung. :oops:

theindless hat geschrieben: Wenn ich diese mit Strg+C/Strg+V um eine Zeile nach unten kopiert hatte, hat es funktioniert.
Und ich hatte sie kopiert, und dann wahllos in diverse andere Zellen einzeln eingefügt. Und da gabs keine Probleme.

theindless hat geschrieben: Wenn ich diese mit Strg+C/Strg+V in mehrere Zeilen nach unten kopiert hatte, dann nicht.
Sorry, nicht verstehn.

theindless hat geschrieben: Wenn ich Sie mit der Maus "nach unten gezogen" hatte, dann hatte es nicht funktioniert.
Bestätige ich. WinXP OOo 3.2.1 & 3.3.0 & AOO 3.4.0

Karolus hat geschrieben:
Und nun noch das ganze für die Spaltenbreite.
Für die Spaltenbreite gibts die "eingebaute" Funktion:

Code: Alles auswählen

=ZELLE("Width") 
allerdings verwendet die eine andere Masseinheit
Und da habe ich eben noch nicht herausgefunden auf was die beruht. Ich dachte das dies ein Excel kompatibles Maß ist, was aber nicht der Fall ist. Aber das soll ja jetzt wohl keine Rolle spielen, oder!? (***)

Karolus hat geschrieben: trotzdem muss ich etwas korrigieren:
In der Funktionssignatur steht: aktZeile as LONG sinnvoller wäre: aktZeile as INTEGER
Hast Recht. Es ist sinnvoller, und ich hab das gleich bei mir dementsprechend für beide geändert. Danke für den Hinweis.



Gruß
balu


[edith]
(***) Das ist wohl die Anzahl an Zeichen die in eine Zelle ohne Umbruch und Überlauf passen.
[/edith]
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
theindless
*****
Beiträge: 355
Registriert: So, 09.05.2010 12:37

Re: Calc Funktion Zeilenhöhe in Zelle ausgeben

Beitrag von theindless »

Hallo,
balu hat geschrieben:
theindless hat geschrieben:Wenn ich diese mit Strg+C/Strg+V um eine Zeile nach unten kopiert hatte, hat es funktioniert.
Und ich hatte sie kopiert, und dann wahllos in diverse andere Zellen einzeln eingefügt. Und da gabs keine Probleme.
So war meins auch gemeint :oops: .... wenn ich in eine einzelne Zelle hineinkopiere, klappte es...
balu hat geschrieben:Sorry, nicht verstehn.
Gemeint war nach Strg+C mehrere Zeilen zu markieren und Strg+V zu drücken.

Manchmal ist schon schwer zu schreiben, was man(n) meint :lol:

theindless
Lernbegieriger Nutzer mit (hoffentlich) steigendem Wissen
msxport
*
Beiträge: 13
Registriert: Mi, 24.08.2011 11:08

[gelöst] Calc Funktion Zeilenhöhe in Zelle ausgeben

Beitrag von msxport »

Hallo,

vielen Dank für die Antworten. Funktioniert jetzt einwandfrei!

MfG
Markus
Antworten