Schaltfläche bedingt sichtbar und nutzbar

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Schaltfläche bedingt sichtbar und nutzbar

Re: Schaltfläche bedingt sichtbar und nutzbar

von AlinaGeier » Mi, 10.02.2021 16:56

Vielen Dank! Aber jetzt ist es so, dass die Schaltflächen erst verschwinden, (nachdem die Bedingung erfüllt ist und) wenn man in irgendeiner Zelle den Wert manuell verändert, also entweder herauslöscht oder etwas hineinschreibt. Gibt es auch hierfür wieder eine Lösung? Das wäre echt super!
Liebe Grüße, Alina

Re: Schaltfläche bedingt sichtbar und nutzbar

von Stephan » Mi, 10.02.2021 13:02

Du kannst im Makro beliebig vioele Bedinungen für beliebige SChaltflächen/Zellen hintereinander abfragen/einstellen:

Code: Alles auswählen

Sub Check_more()
    oSheet = thiscomponent.sheets.getbyname("Tabelle1")
    
    With oSheet.Drawpage.getForms.getByIndex(0)
                        
	    If .hasByName("Schaltfläche 1") = True AND oSheet.getcellrangebyname("A1").String = "richtige Antwort" then
		    	.getByName("Schaltfläche 1").EnableVisible = "False"
		    ElseIf .hasByName("Schaltfläche 1") = True AND oSheet.getcellrangebyname("A1").String <> "richtige Antwort" then
		    	.getByName("Schaltfläche 1").EnableVisible = "True"                             
	    End If
	    
	    If .hasByName("Schaltfläche 2") = True AND oSheet.getcellrangebyname("A2").String = "X" then
		    	.getByName("Schaltfläche 2").EnableVisible = "False"
		    ElseIf .hasByName("Schaltfläche 2") = True AND oSheet.getcellrangebyname("A2").String <> "X" then
		    	.getByName("Schaltfläche 2").EnableVisible = "True"                             
	    End If
	    
	    If .hasByName("Schaltfläche 123") = True AND oSheet.getcellrangebyname("E110").String = "Bla" then
		    	.getByName("Schaltfläche 123").EnableVisible = "False"
		    ElseIf .hasByName("Schaltfläche 123") = True AND oSheet.getcellrangebyname("E110").String <> "Bla" then
		    	.getByName("Schaltfläche 123").EnableVisible = "True"                             
	    End If
	    
	    'usw. 
	    
    End With
End Sub
Oder sollte ich für diese Frage vielleicht gleich eine ganz neue Frage erstellen?
Ja, eigentlich schon. Im Zweifel(*) ist das jedenfalls zu bevorzugen.


(*)Gewünscht ist das alte Threads nicht verlängert werden sollen, der Zweifel ist nur was ein alter Thread ist bzw. ob ein Thread der nur wenige Tage alt ist, schon als alter Thread gilt.


Gruß
Stephan

Re: Schaltfläche bedingt sichtbar und nutzbar

von AlinaGeier » Mi, 10.02.2021 10:26

Noch ein Unterschied zwischen den Makros: Der Text, auf den geprüft wird, lautet nur bei 1. Makro "richtige Antwort", bei den anderen nur "X".
Oder sollte ich für diese Frage vielleicht gleich eine ganz neue Frage erstellen?
LG, Alina

Re: Schaltfläche bedingt sichtbar und nutzbar

von AlinaGeier » Di, 09.02.2021 21:29

Hallo,
entschuldigt bitte, dass ich nochmals nerven muss:D Ich habe noch eine kurze Frage zu diesem Thema:
Das funktioniert jetzt super, zuerst das alte Makro über Tabellen-Ereignisse--> Inhalt geändert hinzufügen, dann das Makro unter Makros verwalten so umschreiben, wie in deiner Beschreibung und dann unter Tabellen-Ereignisse--> Auswahl geändert hinzufügen.
Allerdings habe ich jetzt mehrere solcher Schaltflächen in meiner Tabelle, die alle ein ziemlich ähnliches Makro haben und die ebenfalls nach demselben Prinzip verschwinden sollen, wenn ein bestimmter Text in einer Zelle steht. Ich weiß nur nicht, wie ich die einzelnen Makros im Tabellen-Ereignis als eines zusammenfassen soll. Wisst ihr, wie ich ein Makro schreiben kann, dass ich dann einfügen kann, in dem die ganzen anderen sind? Es sind lediglich der Name des Makros und einzelne Zellen anders, sonst sind die Makros alle gleich.
LG, Alina

Re: Schaltfläche bedingt sichtbar und nutzbar

von AlinaGeier » Do, 04.02.2021 20:26

Vielen, vielen Dank! Jetzt funktioniert alles so, wie ich es mir vorgestellt habe^^

Re: Schaltfläche bedingt sichtbar und nutzbar

von AlinaGeier » Do, 04.02.2021 20:24

Vielen, vielen Dank! Jetzt funktioniert alles so, wie ich es mir vorgestellt habe^^

Re: Schaltfläche bedingt sichtbar und nutzbar

von Stephan » Do, 04.02.2021 09:56

Könntest du mir kurz erklären, was mit "Unter Aufgabe der Auswertung des event-Objekts könntest Du das Makro ändern" gemeint ist?
Das ich bei dem Makro die Übergabe des event.Objektes entfernt habe, also statt:

Code: Alles auswählen

Sub Check_A1(event)
das hier nutze:

Code: Alles auswählen

Sub Check_A1()
Und das ich die Auswertung des Event-Objektes:

Code: Alles auswählen

if oRange.queryIntersection(event.RangeAddress).count = 1 then

...

end if
ebenfalls entfernt habe.

Soll ich unter Extras--> Makros--> Makros verwalten--> Basic das Makro Check_A1 verändern?
ja, und zwar so das es dem Makro entspricht, das ich gepostet habe.


Gruß
Stephan

Re: Schaltfläche bedingt sichtbar und nutzbar

von AlinaGeier » Do, 04.02.2021 09:49

Okay, vielen Dank! Allerdings ist mir nicht ganz klar, wie und wo ich das jetzt eingeben soll.
Könntest du mir kurz erklären, was mit "Unter Aufgabe der Auswertung des event-Objekts könntest Du das Makro ändern" gemeint ist?
Soll ich unter Extras--> Makros--> Makros verwalten--> Basic das Makro Check_A1 verändern? Oder wie kann man ein Makro unter Aufgabe des Event-Objekts ändern? Sorry, dass ich das fragen muss haha

Re: Schaltfläche bedingt sichtbar und nutzbar

von Stephan » Do, 04.02.2021 08:46

Gibt es irgendeine Möglichkeit, dass es egal für das Makro ist, ob der Wert in Zelle B1 manuell oder durch eine Formel 1 ist, oder ist das nicht möglich?

Unter Aufgabe der Auswertung des event-Objekts könntest Du das Makro ändern zu:

Code: Alles auswählen

Dim oSheet as Object
Dim oRange as Object
Dim oForm as Object
Sub Check_A1()
    oSheet = thiscomponent.sheets.getbyname("Tabelle1")
	    oRange = oSheet.getcellrangebyname("A1")
		oForm=thisComponent.DrawPages.getByIndex(0)
			oForm=oForm.getForms.getByIndex(0).getByIndex(0)
   			If oForm.Name="Schaltfläche 1" AND oRange.Value = 1 then
   				oForm.EnableVisible ="False"
   			ElseIf oForm.Name="Schaltfläche 1" AND oRange.Value > 1 then
   				oForm.EnableVisible ="True"   				
			End If
End Sub
und dann dem Tabellenereignis "Auswahl geändert" zuweisen.

Da die Änderung in B1 (egal ob per Formel oder direkter Eingabe) kaum(*) möglich ist ohne die Auswahl zu ändern sollte das funktionieren.

(*)

z.B. eine Änderung in deer Eingabezeile würde nicht direkt erkannt, sondern nur wenn man danach wiedeer in eine Zelle wechselt.



Gruß
Stephan

Re: Schaltfläche bedingt sichtbar und nutzbar

von AlinaGeier » Do, 04.02.2021 08:33

Oder @craig22 gibt es vielleicht irgendeine Seite, auf der Programmierer so was freiwillig programmieren?
LG, Alina

Re: Schaltfläche bedingt sichtbar und nutzbar

von AlinaGeier » Mi, 03.02.2021 23:25

Ups, daran hats gelegen, vielen Dank! Jetzt habe ich aber noch ein Problem. Ich brauche das alles für ein Schulprojekt, "Wer wird Millionär". Deshalb hägt die Zelle B1, von der die Zelle A1 abhängt, auch wieder von einer Zelle ab und so weiter und die Formeln darin sind alle ziemlich lang und kompliziert. Ich dachte, dass es egal ist, ob in der Zelle B1 der Wert 1 per Hand oder Wenn-Formel eingetragen ist, ist es aber nicht. Gibt es irgendeine Möglichkeit, dass es egal für das Makro ist, ob der Wert in Zelle B1 manuell oder durch eine Formel 1 ist, oder ist das nicht möglich?
Die Zelle D10 (bisher als A1 bekannt) hat folgende Formel:

=WENN(ODER(UND(C10="A";A6="X";B6="";A7="";B7="");UND(C10="B";A6="";B6="X";A7="";B7="");UND(C10="C";A6="";B6="";A7="X";B7="");UND(C10="D";A6="";B6="";A7="";B7="X"));"RICHTIGE ANTWORT";WENN(UND(A6="";B6="";A7="";B7="");" ";WENN(ODER(UND(A6="X";B6="X");UND(A6="X";A7="X");UND(A6="X";B7="X");UND(B6="X";A7="X");UND(B6="X";B7="X");UND(A7="X";B7="X");UND(A6="X";B6="X";A7="X");UND(A6="X";B6="X";B7="X");UND(A6="X";A7="X";B7="X");UND(B6="X";A7="X";B7="X");UND(A6="X";B6="X";A7="X";B7="X"));"ES KÖNNEN NICHT MEHRERE ANTWORTEN ANGEKREUZT WERDEN";"FALSCHE ANTWORT")))

Sie gibt an, abhängig ob in eine der vier Auswahlzellen (A6, A7, A8, A9) ein "X" ist oder 2 oder 3 oder 4, ob die Antwort richtig oder falsch ist, oder ob mehrere Antworten angekreuzt wurden. Ob die Antwort richtig ist, ist abhängig von dem richtigen Antwortbuchstaben für jede Frage (D9) und der angekreuzten Zelle. Die Formel für D9 lautet:

=WENN(ODER(A6="X";B6="X";A7="X";B7="X");WENN(A1=1;"A";WENN(A1=2;"B";WENN(A1=3;"C";WENN(A1=4;"D";WENN(A1=5;"A";WENN(A1=6;"B";WENN(A1=7;"C";WENN(A1=8;"D";WENN(A1=9;"A";WENN(A1=10;"B";WENN(A1=11;"C";WENN(A1=12;"D";WENN(A1=13;"A";WENN(A1=14;"B";WENN(A1=15;"C";" ")))))))))))))));" ")

Diese ist wiederum abhängig von der Fragenummer (A1), die durch die Schaltfläche "Weiter" bei Betätigen automatisch um 1 erhöht wird. Und eben diese Schaltfläche möchte ich nur dann sichtbar machen, wenn die richtige Antwort angekreuzt wurde.

Ich bin mir sicher, dass das extrem kompliziert ist oder gar nicht möglich mit so vielen Formeln, die alle wieder von einander abhängig sind. Dashalb die Frage, ob man einstellen kann, dass das Makro Check_A1 (oder dann eben Check_D10) unabhängig von den ganzen Formeln ist und den Text in der Zelle D10 auch dann nimmt, wenn er nicht manuell eingetragen wurde.

Ich bin so dankbar für deine Antworten und hoffe, ich nerve dich nicht damit, du und dein Wissen sind echt ein Segen!

Ganz liebe Grüße, Alina

Re: Schaltfläche bedingt sichtbar und nutzbar

von craig22 » Mi, 03.02.2021 22:18

Hallo Alina,

hast Du den Entwurfsmoddus für Steuerelemente ausgeschaltet:
Menü Ansicht → symbolleisten → Formularentwurf
Dann über das Symbol "Entwurfsmodus" umschalten.

Re: Schaltfläche bedingt sichtbar und nutzbar

von AlinaGeier » Mi, 03.02.2021 22:09

Ich habe in A1 die Wenn-Formel geschrieben, eine Schaltfläche eingefügt, dein Makro mit Copy&Paste zu meinen Makros hinzugefügt, davor habe ich das alte Makro mit dem Namen Check_A1 gelöscht, und dann habe ich wie in der Anleitung oben das neue Makro als Ereingnis angebracht. Ich habe auch überprüft, ob Schaltfläche und Tabellenblatt wirklich "Schaltfläche 1" und "Tabelle1" heißen, aber wenn ich den Wert in B1 nun so ändere, dass in A1 "richtige Antwort" erscheint, verschwindet die Schaltfläche trotzdem nicht. Hast du eine Idee, woran das liegen könnte?

LG, Alina

Re: Schaltfläche bedingt sichtbar und nutzbar

von craig22 » Mi, 03.02.2021 19:03

Hallo Alina,
  • Formel in Zelle A1 =

    Code: Alles auswählen

    =WENN(B1=1;"richtige Antwort";0)
  • In Zelle B1 eine 1 oder etwas anderes schreiben.
  • Das Tabellenereignis bleibt unverändert.
  • Beachte auch die Kommantare im Code
Der Code dazu:

Code: Alles auswählen

REM  *****  BASIC  *****

Dim event
Dim oSheet as Object
Dim oRange as Object
Dim oForm as Object
Sub Check_A1(event)
'Sub Check_A1()
    oSheet = thiscomponent.sheets.getbyname("Tabelle1")
		' Die Zelle in der die Wenn-Funktion steht
	    oRange1 = oSheet.getcellrangebyname("A1")
	    	' Die Zelle auf welche reagiert werden soll
		    oRange2 = oSheet.getcellrangebyname("B1")
	
		oForm=thisComponent.DrawPages.getByIndex(0)
			oForm=oForm.getForms.getByIndex(0).getByIndex(0)

    if oRange2.queryIntersection(event.RangeAddress).count = 1 then

   			If oForm.Name="Schaltfläche 1" AND oRange1.Text.String = "richtige Antwort" then
   				oForm.EnableVisible ="False"
   			ElseIf oForm.Name="Schaltfläche 1" AND oRange1.Text.String <> "richtige Antwort" then
   				oForm.EnableVisible ="True" 
			End If
   end if

End Sub

Re: Schaltfläche bedingt sichtbar und nutzbar

von craig22 » Mi, 03.02.2021 18:29

Hallo Alina,

eine unmittelbare Lösung dafür habe ich nicht.

Ggf. wenn ich mehr Informationen zu Deinen Abläufen habe:

Zelladressen?
Wie lautet die WENN-Funktion?

Nach oben