Ich brauch Hilfe für ein sehr kompliziertes Makro. Ich bin leider Einsteiger in diesem Thema und kann es leider nicht ohne Hilfe selbt programmieren, vielleicht kann mir ja hier jemand helfen und mir sagen, wie ich da ran gehen soll oder mir sogar ein Makro zu schicken. Das soll das Makro machen:
Ich muss in Calc das Spiel “Wer wird Millionär” erstellen. Es gibt eine “Weiter” Schaltfläche, die bei Betätigen Zelle A1 um 1 erhöht und die Zellen A6, A7, B6, B7 leert. In diesen 4 Zellen ist ein Dropbox-Menü, um die Antworten anzukreuzen. Die Zelle A1 gibt die Fragenummer an, bei Betätigen der “Weiter” Schaltfläche wir also zur nächsten Frage gesprungen und die angekreuzten Antworten wieder gelöscht. Ich habe auch schon geschafft, dass Angezeigt wird, ob die Antwort richtig war. Dazu habe ich zunächst eine Formel in die Zelle D9 geschrieben, die immer angibt, ob Antwort A,B,C oder D richtig ist, also ein Kreuz in Zelle A6, A7, B6, B7, abhängig von der Fragenummer in A1. Die Formel in 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";" ")))))))))))))));" ")
Dann habe ich daneben in Zelle D10 anzeigen lassen, ob die Antwort richtig oder falsch ist oder mehrere Antworten angekreuzt wurden. Ob die Antwort richtig ist, habe ich dadurch erreicht, dass ich “RICHTIGE ANTWORT” anzeigen lasse, wenn der Buchstabe in D9 mit der Zelle A6, A7… übereinstimmt, also in D9 beispielsweise D steht und ein Kreuz in B7 ist. Die Formel in D10 lautet:
=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")))
Ich möchte jetzt, dass nur wenn in Zelle D10 “RICHTIGE ANTWORT” anzeigt, die “Weiter” Schaltfläche sichtbar ist. Ich habe schon über Ereignisse geschafft, dass die Schaltfläche nur sichtbar ist, wenn der Text manuell in D10 eingegeben wird, wird er allerdings durch diese Formeln angezeigt, funktioniert das Makro nicht. Ich habe auch schon ein Makro gefunden, dass die Schaltfläche nur dann anzeigt, wenn der Text durch die WENN-Formel in Zelle A1, in diesem Beispiel für D10 verwendet, WENN(B1=1;“RICHTIGE ANTWORT”;0). B1 steht hier stellvertretend für D9, aber in D9 wird auch wiederum der Wert nicht manuell eingetragen sondern wieder mit einer WENN-Formel und in A1 wird der Wert auch nicht manuell eingetragen sodern über die “Weiter” Schaltfläche, die eben unsichtbar gemacht werden soll. Das Makro hierfür lautet:
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 ="True"
ElseIf oForm.Name="Schaltfläche 1" AND oRange1.Text.String <> "richtige Antwort" then
oForm.EnableVisible ="False"
End If
end if
End Sub
Jetzt müssen quasi noch die beiden ewig langen WENN-Formeln miteingebaut werden.
Gibt es hier begabte Programmierer, die mir helfen können? Vielen Dank schonmal!!!
Ganz liebe Grüße, Katja
[Edit - Opaque] Code als vorformatierten Text zwecks besserer Lesbarkeit formatiert.