Seite 1 von 1
[gelöst] Calc Funktion Zeilenhöhe in Zelle ausgeben
Verfasst: Do, 24.05.2012 12:01
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
Re: Calc Funktion Zeilenhöhe in Zelle ausgeben
Verfasst: Do, 24.05.2012 22:55
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.
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
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
Re: Calc Funktion Zeilenhöhe in Zelle ausgeben
Verfasst: Fr, 25.05.2012 06:28
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
Re: Calc Funktion Zeilenhöhe in Zelle ausgeben
Verfasst: Fr, 25.05.2012 08:09
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:
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
Re: Calc Funktion Zeilenhöhe in Zelle ausgeben
Verfasst: Fr, 25.05.2012 09:43
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.
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:
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]
Re: Calc Funktion Zeilenhöhe in Zelle ausgeben
Verfasst: Fr, 25.05.2012 10:06
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

.... 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
theindless
[gelöst] Calc Funktion Zeilenhöhe in Zelle ausgeben
Verfasst: Fr, 25.05.2012 10:43
von msxport
Hallo,
vielen Dank für die Antworten. Funktioniert jetzt einwandfrei!
MfG
Markus