Bereich ausblenden

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

Moderator: Moderatoren

hebbe
Beiträge: 7
Registriert: Fr, 07.12.2012 12:06

Bereich ausblenden

Beitrag von hebbe »

Hallo,

bin neu hier, weil ich mich auch erst seit kurzem mit Open Office und den Makros beschäftige.

Ich habe hier folgendes Makro, mit dem bestimmte Zellen im Tabellenblatt durch ein Makro ein- bzw. ausgeblendet werden können,
was soweit auch wunderbar funktioniert:

sub hiderowsunternehmen1

Dim myDoc As Object
Dim mySheet As Object
Dim DrawPage As Object
Dim oForm As Object
myDoc = ThisComponent
mySheet = myDoc.Sheets.GetByIndex(2) ' Unternehmen (1)
xSheet = myDoc.Sheets.getByName("Unternehmen (1)")
DrawPage = mySheet.DrawPage
oForm = DrawPage.Forms.GetByIndex(0) 'Auswahl der ersten Grafik im Sheet Unternehmen (1)
myRange = xsheet.getcellrangebyposition(0,165,0,180).getrows()
myRange1 = xsheet.getcellrangebyposition(0,198,0,213).getrows()
myRange2 = xsheet.getcellrangebyposition(0,214,0,216).getrows()
MF1 = oForm.getByName("Markierfeld 1")
if MF1.state = 0 then myRange.isvisible = true
if MF1.state = 1 then myRange.isvisible = false
if MF1.state = 0 then myRange1.isvisible = true
if MF1.state = 1 then myRange1.isvisible = false
if MF1.state = 1 then myRange2.isvisible = true
if MF1.state = 0 then myRange2.isvisible = false
End Sub


Jetzt ist es allerdings so, dass die Nutzer des Tabellenblattes bestimmte Zeilen im Dokument einfügen bzw. löschen können.
Dadurch werden dann ggf. nicht mehr die korrekten Zeilen ein- bzw. ausgeblendet.
Habe den entsprechenden Zeilen der Tabelle Namen zugeordnet (Zeile165-Zeile180: Analyse1; Zeile 198-213: Analsye2; Zeilen 214-216: Analsye 3).
Jetzt würde ich diese definierten "Bereiche" gerne in das Makro so einbinden, damit diese entsprechend ausgeblendet werden.

Ich hoffe, ich konnte mich verständlich genug ausdrücken, damit ihr wisst, was ich gerne hätte.
Hoffe zudem, dass das auch so möglich ist. Bin nämlich bisher nicht fündig geworden.

Danke schon mal vorab und viele Grüße

hebbe
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Bereich ausblenden

Beitrag von F3K Total »

Hi Hebbe,
so geht's:

Code: Alles auswählen

sub hiderowsunternehmen1
    Dim oDoc As Object
    Dim oSheet As Object
    Dim oDrawPage As Object
    Dim oForm As Object
    Dim oDatabaseRanges as Object
    Dim sRangenames(2) as string
	
    sRangenames(0) = "Analyse1"
    sRangenames(1) = "Analyse2"
    sRangenames(2) = "Analyse3"
	
    oDoc = ThisComponent
    oDatabaseRanges = oDoc.DatabaseRanges
    oSheet = oDoc.Sheets.getByName("Unternehmen (1)")
    oDrawPage = oSheet.DrawPage
    oForm = oDrawPage.Forms.GetByIndex(0) 'Auswahl des ersten Formulares im Sheet Unternehmen (1)
    MF1 = oForm.getByName("Markierfeld 1")
    
    for i = 0 to 2
        oRows = oDatabaseRanges.getByName(sRangenames(i)).ReferredCells.Rows
        if MF1.state = 0 then 
            oRows.isvisible = true
        else
            oRows.isvisible = false
        endif
    next i
End Sub
Viel Erfolg
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Bereich ausblenden

Beitrag von F3K Total »

Moin,
vermutlich gibt es in deinem Dokument wenigstens einen der drei Bereiche
Analyse1
Analyse2
Analyse3

nicht.
Gruß R
hebbe
Beiträge: 7
Registriert: Fr, 07.12.2012 12:06

Re: Bereich ausblenden

Beitrag von hebbe »

Hallo R,

doch, habe ich eben nochmal nachgeschaut. Es sind alle 3 Bereiche so benannt.

Bin doch richtig, dass ich das über Einfügen | Namen festlegen definiere.

Grüße

hebbe
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Bereich ausblenden

Beitrag von balu »

Hallo hebbe,

versuchs doch mal hiermit.
oRows = oDatabaseRanges.getByName(SRangenames(i)).ReferredCells.Rows
Bedenke bitte: Ein e ist kein a :lol:



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
hebbe
Beiträge: 7
Registriert: Fr, 07.12.2012 12:06

Re: Bereich ausblenden

Beitrag von hebbe »

Hallo Balu,

danke für den Hinweis. Ist aber leider nicht das Problem. War nur ein Fehler beim Abtippen.
Im Makro tatsächlich als Database... erfasst.

Grüße

hebbe
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Bereich ausblenden

Beitrag von F3K Total »

Hi,
vielleicht kannst Du ein Beispieldokument hochladen, so ist es schwierig.
Das der Code funzt, kannst Du am angehängten Beispiel sehen.

Gruß R
Dateianhänge
Hide_named_Ranges.ods
(10.99 KiB) 132-mal heruntergeladen
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Bereich ausblenden

Beitrag von F3K Total »

Hallo,
hebbe hat geschrieben:Bin doch richtig, dass ich das über Einfügen | Namen festlegen definiere.
Ich habe die Bereiche anders festgelegt:
Daten/Bereich festlegen
Daran wird es liegen.
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Bereich ausblenden

Beitrag von F3K Total »

Hallo,
da bin ich wohl hereingefallen, es gibt databaseranges und namedranges, die, die du verwendest, sind namedranges, hier ein Makro das damit funktioniert.

Code: Alles auswählen

sub hiderowsunternehmen_namedRanges
    Dim oDoc As Object
    Dim oSheet As Object
    Dim oDrawPage As Object
    Dim oForm As Object
    Dim oDatabaseRanges as Object
    Dim sRangenames(2) as string
	
    sRangenames(0) = "Analyse1"
    sRangenames(1) = "Analyse2"
    sRangenames(2) = "Analyse3"
	
    oDoc = ThisComponent
    oNamedRanges = oDoc.NamedRanges
    oSheet = oDoc.Sheets.getByName("Unternehmen (1)")
    oDrawPage = oSheet.DrawPage
    oForm = oDrawPage.Forms.GetByIndex(0) 'Auswahl des ersten Formulares im Sheet Unternehmen (1)
    MF1 = oForm.getByName("Markierfeld 1")
    
    for i = 0 to 2
        oRows = oNamedRanges.getByName(sRangenames(i)).ReferredCells.Rows
        if MF1.state = 0 then 
            oRows.isvisible = true
        else
            oRows.isvisible = false
        endif
    next i
End Sub
Viel Erfolg
Gruß R
hebbe
Beiträge: 7
Registriert: Fr, 07.12.2012 12:06

Re: Bereich ausblenden

Beitrag von hebbe »

Hallo R,

vielen lieben Dank, das ist genau das wonach ich gesucht habe. Einfach perfekt.

Jetzt bin ich glücklich.

Wünsche noch einen schönen Abend

hebbe
hebbe
Beiträge: 7
Registriert: Fr, 07.12.2012 12:06

Re: Bereich ausblenden

Beitrag von hebbe »

Hallo Zusammen,

habe nochmal an meinem Tabellenblatt weiter gefeilt und dazu noch eine Frage, bei der mir hoffentlich jemand weiterhelfen kann.

In den Zeilen die ausgeblendet werden, befinden sich auch Markierfelder. Blende ich die Zeilen aus, bleiben die Markierfelder aber
nach wie vor sichtbar, egal ob ich sie an einer Zelle oder der Seite verankere.

Gibt es überhaupt eine Möglichkeit, diese gemeinsam mit den Zeilen "unsichtbar" zu machen.

Wünsche einen schönen Abend

hebbe
Antworten