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 ?
Tabellen automatisch ausblenden
Moderator: Moderatoren
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
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