Drucken erst nach Befüllung bestimmter Zellen
Moderator: Moderatoren
Drucken erst nach Befüllung bestimmter Zellen
Liebe Spezialisten,
habe ein Calcformular gebastelt indem der Anwender in einem Bemerkungsfeld etwas reinschreiben muss und erst wenn Er/Sie dort was hinterlegt hat, erst dann soll der Druckbutton aktivierbar sein, vorher nicht.
Also, das Bemerkungsfeld ist ein Mussfeld und darf erst nach Befüllung desgleichen soll das komplette Formular druckbar sein.
Es sind ca. 4 Zellen in einem 4seitigen Formular, die befüllt werden sollen und erst dann darf gedruckt werden.
Vielleicht gibt es eine einfache Lösung ohne Makro.
Vielen Dank für die Aufmerksamkeit und auf Nachricht freut sich,
Tobago
habe ein Calcformular gebastelt indem der Anwender in einem Bemerkungsfeld etwas reinschreiben muss und erst wenn Er/Sie dort was hinterlegt hat, erst dann soll der Druckbutton aktivierbar sein, vorher nicht.
Also, das Bemerkungsfeld ist ein Mussfeld und darf erst nach Befüllung desgleichen soll das komplette Formular druckbar sein.
Es sind ca. 4 Zellen in einem 4seitigen Formular, die befüllt werden sollen und erst dann darf gedruckt werden.
Vielleicht gibt es eine einfache Lösung ohne Makro.
Vielen Dank für die Aufmerksamkeit und auf Nachricht freut sich,
Tobago
Mussfelder erst bei Befüllung druckbar
Liebe Spezialisten,
bei einem gesperrten Tabellenblatt darf erst nach Befüllung von 4 verschiedenen PflichtZellen gedruckt werden.
(Pflichtfelder) 4 Stück an der Zahl.
Wenn der Anwender versucht die Tabelle zu drucken, ohne das diese "Pflichtzellen" befüllt sind, soll dem Anwender ein Hinweis erscheinen, das die Pflichtfelder noch nicht beschrieben wurden.
Wie geht so etwas?
Vielen Dank für die Aufmerksamkeit,
Tobago
bei einem gesperrten Tabellenblatt darf erst nach Befüllung von 4 verschiedenen PflichtZellen gedruckt werden.
(Pflichtfelder) 4 Stück an der Zahl.
Wenn der Anwender versucht die Tabelle zu drucken, ohne das diese "Pflichtzellen" befüllt sind, soll dem Anwender ein Hinweis erscheinen, das die Pflichtfelder noch nicht beschrieben wurden.
Wie geht so etwas?
Vielen Dank für die Aufmerksamkeit,
Tobago
Re: Drucken erst nach Befüllung bestimmter Zellen
Wenn niemand antwortet, bitte kein neues Thema mit derselben Frage aufmachen, sondern das alte Thema mit einer kurzen Nachfrage wieder "hochholen".
Gruß
lorbass, Mod
Gruß
lorbass, Mod
Re: Drucken erst nach Befüllung bestimmter Zellen
Hallo tobago,
habe mich mit dem Thema beschäftigt.
Leider ist es mir nicht gelungen ein Ereignis zu finden, das dass Auslösen des Druckvorganges über das Menü oder z.B. Strg+P detektiert. Es gibt zwar ein Ereignis "onPrint" aber wenn es übermittelt wird, läuft der Druck bereits. Hat vielleicht jemand eine Idee, wie man dieses Ereignis detektieren kann?
Als Lösung reicht Dir vielleicht Folgendes, siehe auch angehängte Datei:
habe mich mit dem Thema beschäftigt.
Leider ist es mir nicht gelungen ein Ereignis zu finden, das dass Auslösen des Druckvorganges über das Menü oder z.B. Strg+P detektiert. Es gibt zwar ein Ereignis "onPrint" aber wenn es übermittelt wird, läuft der Druck bereits. Hat vielleicht jemand eine Idee, wie man dieses Ereignis detektieren kann?
Als Lösung reicht Dir vielleicht Folgendes, siehe auch angehängte Datei:
- Das Makro "S_enable_Print" wird durch das Tabellenereignis "Inhalt geändert" ausgelöst. Es aktiviert die Schaltfläche "ocmdprint" mit dem Titel "Seite Drucken" nur wenn alle vier Pflichtzellen, hier B1 bis B4, befüllt sind.
Code: Alles auswählen
Sub S_enable_Print osheet = Thiscomponent.sheets.getbyname("Tabelle1") nCounter = 0 for i = 1 to 4 ocell = osheet.getcellrangebyname("B"+i)'Zellen B1 bis B4 if ocell.formula >"" then nCounter = nCounter + 1'Hier wird geprüft, ob in die Zellen befüllt sind next i ocmdprint = osheet.drawpage.forms.Formular.cmdprint if nCounter = 4 then ocmdprint.Enabled = true else ocmdprint.Enabled = false End Sub
- Das Makro "S_Print" zum Drucken, ausgelöst durch das Drücken der Schaltfläche "Seite Drucken", die eben nur dann gedrückt werden kann, wenn alle vier Pflichtfelder befüllt sind.
Code: Alles auswählen
Sub S_Print Dim args() thiscomponent.print(args()) End Sub
- Dateianhänge
-
- enable_print.ods
- (10.48 KiB) 111-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Drucken erst nach Befüllung bestimmter Zellen
Lieber Spezialist,
bin sprachlos, Super und gefühlt zu 90 % gelöst.
Vielen Dank für deine Mühe, habe viel gelernt.
Schade, dass es mit der Deaktivierung des Druckbuttons nicht klappt, deshalb nur 2 kleine Fragen zum Design.
1. Wie kann ich dein Druckbutton verschieben oder auf eine anderes Stelle des Tabellenblattes positionieren und mit einer Meldung versehen, dass dieser aktiv wird, wenn die Bermerkungen befüllt sind ?
2. In deinem sehr gut gelösten Beispiel sind es 4 Zellen untereinander und dein Code im Makro ebenfalls verständlich.
Meine 3 Zellen, die es zu deaktivieren gilt sind z.B., A109, J108 und J33.
Wie binde ich diese 3 Zellkoordinaten ins Makro ein?
Vielen Dank für die kompetente Lösung.
bin sprachlos, Super und gefühlt zu 90 % gelöst.
Vielen Dank für deine Mühe, habe viel gelernt.
Schade, dass es mit der Deaktivierung des Druckbuttons nicht klappt, deshalb nur 2 kleine Fragen zum Design.
1. Wie kann ich dein Druckbutton verschieben oder auf eine anderes Stelle des Tabellenblattes positionieren und mit einer Meldung versehen, dass dieser aktiv wird, wenn die Bermerkungen befüllt sind ?
2. In deinem sehr gut gelösten Beispiel sind es 4 Zellen untereinander und dein Code im Makro ebenfalls verständlich.
Meine 3 Zellen, die es zu deaktivieren gilt sind z.B., A109, J108 und J33.
Wie binde ich diese 3 Zellkoordinaten ins Makro ein?
Vielen Dank für die kompetente Lösung.
Re: Drucken erst nach Befüllung bestimmter Zellen
Hi,
zum Verschieben des Buttons mußt du in den Formular-Entwurfmodus wechseln. Vorher den Blattschutz herausnehmen. Dann verschieben.
Jetzt rechte Maustaste auf den Button, Kontrollfeld ... Reiter Allgemein, Zeile Hilfetext (unten), hier den Hinweis eintragen.
Den Entwurfsmodus wieder ausschalten.
Der Knopf zum Ein/Ausschalten befindet sich auf der Symbolleiste "Formularentwurf", die du, falls nicht zu sehen, über Ansicht/Symbolleisten einschalten kannst.
Nun zum zweiten Teil:
Ändere das Makro S_enable_Print wie folgt:
Viel Spaß
Gruß R
zum Verschieben des Buttons mußt du in den Formular-Entwurfmodus wechseln. Vorher den Blattschutz herausnehmen. Dann verschieben.
Jetzt rechte Maustaste auf den Button, Kontrollfeld ... Reiter Allgemein, Zeile Hilfetext (unten), hier den Hinweis eintragen.
Den Entwurfsmodus wieder ausschalten.
Der Knopf zum Ein/Ausschalten befindet sich auf der Symbolleiste "Formularentwurf", die du, falls nicht zu sehen, über Ansicht/Symbolleisten einschalten kannst.
Nun zum zweiten Teil:
Ändere das Makro S_enable_Print wie folgt:
Code: Alles auswählen
Sub S_enable_Print
Dim SCellnames(2)
SCellnames(0) = "A109"
SCellnames(1) = "J108"
SCellnames(2) = "J33"
osheet = Thiscomponent.sheets.getbyname("Tabelle1")
nCounter = 0
for i = 0 to 2
ocell = osheet.getcellrangebyname(SCellnames(i))
if ocell.formula >"" then nCounter = nCounter + 1
next i
ocmdprint = osheet.drawpage.forms.Formular.cmdprint
if nCounter = 3 then ocmdprint.Enabled = true else ocmdprint.Enabled = false
End Sub
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Drucken erst nach Befüllung bestimmter Zellen
Vielen Dank - so kann man arbeiten. 

Re: Drucken erst nach Befüllung bestimmter Zellen
Hallo,
weiss jemand, wie man bei verbunden Zellen u.g. Funktionalität herstellen kann.
Also, wenn z.B. A108 von A108-D107 gehen würde?
Vielen Dank und Grüße
Tobago
Sub S_enable_Print
Dim SCellnames(2)
SCellnames(0) = "A109"
SCellnames(1) = "J108"
SCellnames(2) = "J33"
osheet = Thiscomponent.sheets.getbyname("Tabelle1")
nCounter = 0
for i = 0 to 2
ocell = osheet.getcellrangebyname(SCellnames(i))
if ocell.formula >"" then nCounter = nCounter + 1
next i
ocmdprint = osheet.drawpage.forms.Formular.cmdprint
if nCounter = 3 then ocmdprint.Enabled = true else ocmdprint.Enabled = false
End Sub
weiss jemand, wie man bei verbunden Zellen u.g. Funktionalität herstellen kann.
Also, wenn z.B. A108 von A108-D107 gehen würde?
Vielen Dank und Grüße
Tobago
Sub S_enable_Print
Dim SCellnames(2)
SCellnames(0) = "A109"
SCellnames(1) = "J108"
SCellnames(2) = "J33"
osheet = Thiscomponent.sheets.getbyname("Tabelle1")
nCounter = 0
for i = 0 to 2
ocell = osheet.getcellrangebyname(SCellnames(i))
if ocell.formula >"" then nCounter = nCounter + 1
next i
ocmdprint = osheet.drawpage.forms.Formular.cmdprint
if nCounter = 3 then ocmdprint.Enabled = true else ocmdprint.Enabled = false
End Sub
Re: Drucken erst nach Befüllung bestimmter Zellen
Moin,
habe es ausprobiert. Geht. Klicke in die verbundene Zelle und schaue was oben links für eine Zelladresse angezeigt wird, die nimmst du im Code.
Gruß R
habe es ausprobiert. Geht. Klicke in die verbundene Zelle und schaue was oben links für eine Zelladresse angezeigt wird, die nimmst du im Code.
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Drucken erst nach Befüllung bestimmter Zellen
Hallo Fachleute,
wie mach ich aus dem Code eine Fehlermeldung?
Zellbereich: "B23:C23,E23:F23"
Format: Datum TT.MM.JJJJ
Bedingung: Zellen dürfen nicht leer sein.
Danke schon mal.
Gruß Jörg
wie mach ich aus dem Code eine Fehlermeldung?
Zellbereich: "B23:C23,E23:F23"
Format: Datum TT.MM.JJJJ
Bedingung: Zellen dürfen nicht leer sein.
Danke schon mal.
Gruß Jörg
Gruß Jörg
Win 10 Pro AOO 4.1.15
Win 10 Pro AOO 4.1.15
Re: Drucken erst nach Befüllung bestimmter Zellen
Hallo,
so funktioniert es.
Muss ich noch etwas anpassen Pflichtort ist bei mir Rechnungsnummer etc.
Gruß Jörg
so funktioniert es.
Code: Alles auswählen
Sub HauptTeil
Dim oSheet as Object
Dim sPflichtName as String, sPflichtOrt as String
oSheet = thisComponent.Sheets.getbyname("Eingabemaske Abr_Rechnung")
sPflichtName = oSheet.getCellRangeByName("B23").String
sPflichtOrt = oSheet.getCellRangeByName("C23").string
'B23 usw. als Text formatiert
if sPflichtName <>"" and sPflichtOrt <>"" then
'dann sub Abrechnung
Abrechnung
else
print "Vor- und Nachname UND Ort müssen ausgefüllt sein. Sie sind Pflichtfelder!"
end if
End Sub
Gruß Jörg
Gruß Jörg
Win 10 Pro AOO 4.1.15
Win 10 Pro AOO 4.1.15