Seite 1 von 1

Tabellen automatisch ausblenden

Verfasst: Di, 27.06.2006 18:29
von Biblio
Hallo,
könnte es irgendwie möglich sein, die Funktion: Format|Tabelle|Ausblenden mit Hilfe eines Makros zu automatisieren ???
Also, ich habe auf Tabelle1 ein Formel. Das Feld hat einen Namen. Abhängig von dem Ergebnnis der Formel möchte ich Tabelle2 ein- bzw. ausblenden. Wenn das möglich wäre, wie könnte solch ein Makro etwa aussehen ?

Verfasst: Di, 27.06.2006 22:28
von Karolus
Hallo

In etwa könnte das/die Makros so aussehen:

Sub Tabeinaus
oSheet = ThisComponent.CurrentController.getActiveSheet()
'in der nächsten Zeile deine "Ausblendbedingung" hinter Value schreiben
if oSheet.GetCellByPosition(0, 0).Value = 5 Then 'Zelle A1entspr.(0, 0)
tabelleAusblenden
end if
'in der nächsten Zeile die "Einblendbedingung"
if oSheet.GetCellByPosition(0, 0).Value > 5 Then
tabelleEinblenden
end if
End Sub

Das obere ist das auszuführende Makro, dort musst die richtige Position deiner Formelzelle eintragen (0, 0) entspricht A1, und die jeweilige Bedingung anpassen.
Die beiden folgenden Makros brauchst du ebenfalls, da sie im oberen aufgerufen werden

sub tabelleAusblenden
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "aTableName"
args1(0).Value = "Tabelle2"
dispatcher.executeDispatch(document, ".uno:Hide", "", 0, args1())
end sub

sub tabelleEinblenden
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "aTableName"
args1(0).Value = "Tabelle2"
dispatcher.executeDispatch(document, ".uno:Show", "", 0, args1())
end sub

Allerdings funktioniert das ganze nicht automatisch bei einer Änderung der Formelzelle , du hast aber die Möglichkeit die Ausführung des Makros an ein Tastaturkürzel und/oder ein "Ereignis" zu binden. (->Extras ->Anpassen 'Tastatur' bzw. ->->'Ereignis')

Gruß Karo