🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Tabellensheet ausblenden bei best. Wert in Zelle

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
lunki
Beiträge: 6
Registriert: Do 29. Dez 2011, 13:49

Tabellensheet ausblenden bei best. Wert in Zelle

Beitrag von lunki » Do 29. Dez 2011, 14:25

Irgendwann ist immer das erste mal, so nun bei mir dass ich mich an ein Forum wende.
Ich habe folgendes Problem mit Calc:
Ich möchte abhängig davon, ob in einer Zelle eines Sheets (nennen wir es Deckblatt) ein bestimmter Wert steht (z. B. Analyse) dass ein Tabellenblatt z. B. mit dem Namen "Ergebnis" eingeblendet wird. Wenn irgendein anderer Wert drin steht, oder gar kein Wert, dass dieses Sheet "Ergebnis" ausgeblendet bleibt.
Folgendes hab ich in den letzten Stunden versucht:
1. Mittels einer WENN DANN Funktion, d. h wenn der Wert in der Zelle "Analyse" dann blende mit das Sheet "Ergebnis" ein, mittels isvisible = true. Kann aber die Syntax nicht, d. ich bekomme immer wieder Fehlermeldungen

2. Mittels Makro: habe ein Makro aufgezeichnet bei dem ich das Blatt ein- und eines bei dem ich das Blatt ausblende. Wie kann ich nun das Makro automatisiert so ablaufen lassen, wenn in der betreffenden Zelle "Ergebnis" steht (einblenden), bzw. etwas anderes (ausblenden)???

Ich hoffe ich habe meine Frage konkret genug gestellt und jemand kennt sich damit aus.
Ach ja: Software ist LibreOffice 3.3.4 auf Windows 7.
Viele Grüße
Der Lunki

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Tabellensheet ausblenden bei best. Wert in Zelle

Beitrag von balu » Do 29. Dez 2011, 14:42

Hallo Lunki,

kennst Du schon Dannenhöfer?
Kucki hier:
Arbeitsblätter
Und dann:
Wie kann Arbeitsblätter ausblenden?

Und wenn es dann noch hakt, meldest Du dich dann bite in dem dementsprechenden Unterforum: LibreOffice Programmierung.


Gruß
balu

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Tabellensheet ausblenden bei best. Wert in Zelle

Beitrag von F3K Total » Do 29. Dez 2011, 22:12

Hi,
wenn Du ein Tabellenblatt "Deckblatt" und eins "Ergebnis" hast und dann dieses Makro an das Tabellenereignis "Inhalt geändert" von "Deckblatt" hängst, kannst Du in Zelle "A1" von "Deckblatt" mal etwas anderes als "Ergebnis" eintippen, dann wird Tabellenblatt "Ergebnis" ausgeblendet. Gibst Du Ergebnis ein, kommt es zurück.

Code: Alles auswählen

Sub S_table_result_visible_invisible(event)
ocell=event
if event.AbsoluteName="$Deckblatt.$A$1" then
 osheetErgebnis=thiscomponent.sheets.getbyname("Ergebnis")
 if ocell.string="Ergebnis" then
  osheetErgebnis.IsVisible = true
 else
  osheetErgebnis.IsVisible = false
 endif
endif
End Sub
Gruß R
@Balu: wollte es ausprobieren ...
Windows 11: AOO, LO Linux Mint: AOO, LO

lunki
Beiträge: 6
Registriert: Do 29. Dez 2011, 13:49

Re: Tabellensheet ausblenden bei best. Wert in Zelle

Beitrag von lunki » Fr 30. Dez 2011, 09:14

Hallo F3K Total,
da hast du mir schon mal ein gnazes Stück weitergeholfen. Vielen Dank dafür!!
Was ich jetzt aber mit meinen bescheidenen Programmierkenntnissen noch versucht habe (und natürlich gescheitert bin :roll: ) war, die entsprechende Zelle nicht nur auf einen Parameter zu Prüfen, sondern gleich auf zwei (bzw. später dann auf 10 Parameter). Fehlermeldung:
Scripting Framework Fehler, Wrong number of parameters. Hier das script (Die Tabellenblätter heissen Deckblatt und Pestizide und die zu Prüfenden Werte in Zelle C70 Pestizide-S19 und Pestizide-Quechers. Was habe ich falsch gemacht??
PS Muss ich den Eintag jetzt vielleicht in LibreOffice Programmierung verschieben??
PPS Vielen Dank für die Hilfe!!!!!
Lunki

Sub S_table_result_visible_invisible(event)
ocell=event
if event.AbsoluteName="$Deckblatt.$C$70" then
osheetPestizide=thiscomponent.sheets.getbyname("Pestizide")
if ocell.string="Pestizide-S19" then
osheetPestizide.IsVisible = true
if ocell.string="Pestizide-Quechers" then
osheetPestizide.IsVisible = true
else
osheetPestizide.IsVisible = false
endif
endif
endif
End Sub

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Tabellensheet ausblenden bei best. Wert in Zelle

Beitrag von F3K Total » Fr 30. Dez 2011, 09:48

Hi,
zunächst hast Du in der Logik einen Fehler, kann so nicht funktionieren:
Sub S_table_result_visible_invisible(event)
ocell=event
if event.AbsoluteName="$Deckblatt.$C$70" then
osheetPestizide=thiscomponent.sheets.getbyname("Pestizide")
if ocell.string="Pestizide-S19" then
osheetPestizide.IsVisible = true
if ocell.string="Pestizide-Quechers" then
osheetPestizide.IsVisible = true
else
osheetPestizide.IsVisible = false
endif
endif
endif
End Sub

Deine if-Abfragen sagen: Wenn Die ausgewählte Zelle C70 auf dem Deckblatt ist, und in der Zelle "Pestizide-S19" steht, dann sichtbar, und wenn dann noch "Pestizide-Quechers" drinsteht, dann auch sichtbar sonst unsichtbar.
Beides kann aber nie drinstehen.
Darum hier ein übersichtlicher Code in dem Du die Suchwörter oben eintippen kannst:

Code: Alles auswählen

Sub S_table_result_visible_invisible(event)
ocell=event
if event.AbsoluteName="$Deckblatt.$C$70" then
dim asurchwords(1) as string 'Anzahl der Suchwörter -1
asurchwords(0) = "Pestizide-S19"
asurchwords(1) = "Pestizide-Quechers"

 osheetPestizide=thiscomponent.sheets.getbyname("Pestizide")
 for i = 0 to ubound(asurchwords)
   if ocell.string = asurchwords(i) then
     osheetPestizide.IsVisible = true
     exit for
   else
     osheetPestizide.IsVisible = false
   endif
 next i
endif
End Sub
Deine Fehlermeldung kann ich nich nachvollziehen, hast du
F3K Total hat geschrieben:... dieses Makro an das Tabellenereignis "Inhalt geändert" von "Deckblatt" hängst ...
???

Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

lunki
Beiträge: 6
Registriert: Do 29. Dez 2011, 13:49

Re: Tabellensheet ausblenden bei best. Wert in Zelle

Beitrag von lunki » Fr 30. Dez 2011, 10:48

Hi,
super vielen Dank für deine Hilfe. Was mich dem Paradies nun etwas näher bringen würde wäre, wenn die Suchabfrage sich nicht auf Zelle C70 beschränkt, sondern von Zelle C70 bis D79 geht (habe es mit "$Deckblatt.C70:D79" versucht, ging aber nicht).
Weiterhin sollen die entsprechenden Zellen (also C70 bis D79) auch auf den Wert Trocknungsverlust geprüft werden, und wenn der Wert da ist jeweils 2 Tabellenblätter Ein- oder augeblendet werden (Name der Blätter: TV und FB06) (ich weis es ist kurz vor Silvester und ausserdem Freitag, aber PRogrammierer werde ich wohl nicht mehr).
Cheers
Der Lunki

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Tabellensheet ausblenden bei best. Wert in Zelle

Beitrag von F3K Total » Fr 30. Dez 2011, 11:39

So,
nun reicht es, beim nächsten Mal schreibe ich Dir eine Rechnung.

Code: Alles auswählen

Sub S_table_result_visible_invisible(event)
ocell=event
osheetDeckblatt=thiscomponent.sheets.getbyname("Deckblatt")
oCellRange = osheetDeckblatt.getCellRangeByName("C70:D79")'aktiver Bereich in dem gesucht werden soll
oaddress=ocellrange.Rangeaddress
nSC=oaddress.StartColumn
nSR=oaddress.StartRow
nEC=oaddress.EndColumn 
nER=oaddress.EndRow

if ocell.supportsService("com.sun.star.sheet.SheetCell") then
 oCellsRangeAddress = ocell.RangeAddress
  if oCellRange.queryIntersection(oCellsRangeAddress).count = 1 then'Es gibt ocell in oCellrange
  dim asurchwordsPestizide(1) as string
  asurchwordsPestizide(0) = "Pestizide-S19"
  asurchwordsPestizide(1) = "Pestizide-Quechers"

  dim asurchwordsTV_FB06(0) as string
  asurchwordsTV_FB06(0) = "Trocknungsverlust"

  osheetPestizide=thiscomponent.sheets.getbyname("Pestizide")
  osheetTV=thiscomponent.sheets.getbyname("TV")
  osheetFB06=thiscomponent.sheets.getbyname("FB06")

dim bfound_pestizide as boolean
dim bfound_trocknungsverlust as boolean
bfound_pestizide=false
bfound_trocknungsverlust=false
for j= nSC to nEC
for k= nSR to nER
osurchcell = osheetDeckblatt.getcellbyposition(j,k)
  for i = 0 to ubound(asurchwordsPestizide)
   if osurchcell.string = asurchwordsPestizide(i) then bfound_pestizide = true
  next i
  for i = 0 to ubound(asurchwordsTV_FB06)
   if osurchcell.string = asurchwordsTV_FB06(i) then bfound_trocknungsverlust = true
  next i
next k
next j
if bfound_pestizide = true then 
osheetPestizide.IsVisible = true
else
osheetPestizide.IsVisible = false
endif
if bfound_trocknungsverlust = true then 
osheetTV.IsVisible = true
osheetFB06.IsVisible = true
else
osheetTV.IsVisible = false
osheetFB06.IsVisible = false
endif
endif
endif

End Sub
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

lunki
Beiträge: 6
Registriert: Do 29. Dez 2011, 13:49

Re: Tabellensheet ausblenden bei best. Wert in Zelle

Beitrag von lunki » Di 3. Jan 2012, 13:24

Hi F3K Total,
du hast mir total geholfen, total tollen Dank dafür :D :lol: :mrgreen:
Der Lunki


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten