Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Image
BildScreenshot zu Image Image-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Anzeige Zellinhalt in Userform

Betrifft: Anzeige Zellinhalt in Userform von: Markus Lehmann
Geschrieben am: 13.10.2020 13:52:02

Hallo...

Ich habe eine Tabelle mit Rechenaufgaben (Plus und Minus). Insgesamt werden immer 10 Aufgaben (Zahlen werden per Zufall ausgewählt) dem Benutzer angezeigt. Nach Eingabe des Ergebnisses (vom Benutzer) wird angezeigt/überprüft, ob es richtig oder falsch ist.

Nun wollte ich eine Auswertungsübersicht in einer Userform einblenden lassen.

Wenn der Benutzer seine 10 Ergebnisse eingetragen hat, soll automatisch eine Userform eingeblendet werden und dort sollen alle falschen Aufgaben mit dem falschen (eingetragenen) Ergebnis und dem richtigen Ergebnis angezeigt werden.

Es könnten in der Userform somit im ungünstigsten Fall 10 Aufgaben mit korrektem Ergebnis oder keine Aufgabe (alle Ergebnisse waren richtig) stehen.

Ist dies machbar?

P.S. Meine Aufgaben sind so vorbereitet. A3:A12 = Zahlen (z.B. 1. Summand) in B (3:12) steht das Zeichen (+ oder -). In C3:C12 stehen die Zahlen (z.B. 2. Summand). D3:D12 steht jeweils das "=". Und in E3:E12 macht der Benutzer seine Ergebnis-Eintragungen.

Wie gesagt..Die Userform soll als Auswertungsfenster dienen. Hier steht noch einmal wieviele Aufgaben richtig gelöst und wieviele Aufgaben falsch gelöst wurden. Dazu noch die benötigte Zeit für alle Eintragungen. Und hier sollen noch die Aufgaben aufgelistet werden, welche man falsch hatte.

VieleN Dank

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Nepumuk
Geschrieben am: 13.10.2020 13:54:40

Hallo Markus,

erstell mal ein UserForm wie du dir das vorstellst und lade die Mappe hoch.

Gruß
Nepumuk

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Markus Lehmann
Geschrieben am: 13.10.2020 14:50:02

Hallo...Ich lade mal eine Testdatei hoch. So sieht meine Eingabemaske aus. Ich habe meine Eingaben in F8:F17 zu machen. In G8:G17 wird angezeigt, ob mein Ergebnis richtig war.

Eine Userform habe ich noch nicht erstellt, möchte aber in dieser angezeigt bekommen (als Auswertungsfenster) welche Aufgaben falsch waren (z.B. Zeile 9 - 25+30=45 (55 ist das richtige Ergebnis).

Falsch in der Testdatei wären auch Zeile 11, 15 und 17.
Diese 4 Aufgaben sollen dann in der Userform angezeigt werden.

https://www.herber.de/bbs/user/140863.xlsx

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Nepumuk
Geschrieben am: 13.10.2020 15:38:18

Hallo Markus,

schau mal: https://www.herber.de/bbs/user/140866.xlsm

Gruß
Nepumuk

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Markus Lehmann
Geschrieben am: 13.10.2020 18:45:55

Vielen Dank Nepumuk.

Klasse Lösung.

Könnte man noch irgendwie die richtige Lösung mit einbinden? In rot, vielleicht das falsche Ergebnis und in grün dann das richtige Ergebnis?

Und was bedeutet das?
Private Sub CommandButton1_Click()
    Call Unload(Object:=Me)
End Sub
Hattest Du schon einen CommandButton eingefügt in die Userform?

Nach dem Eintragen der Ergebnisse kam bei mir keine automatische Einblendung der Userform (mit den falsch eingetragenen Aufgaben.

Ich habe dann selbst einen Button mit Userform1.Show eingefügt.

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Nepumuk
Geschrieben am: 13.10.2020 19:40:51

Hallo Markus,

so ok?

https://www.herber.de/bbs/user/140872.xlsm

Gruß
Nepumuk

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Markus Lehmann
Geschrieben am: 13.10.2020 21:47:14

Klasse Nepumuk.

Könnte man das ganze noch auf die Spalte daneben (J8:J22, L8:L22 und N8:N22) erweitern???

Bisher hast Du es ja für die ersten 15 Aufgaben hinbekommen.

Wenn ich mich nun entschließe noch mehr Aufgaben zu erstellen, ginge das dann auch???

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Nepumuk
Geschrieben am: 14.10.2020 06:03:59

Hallo Markus,

mehr mache ich nicht, es macht nämlich keinen Spaß 90 Labels und 15 Images umzubenennen.

https://www.herber.de/bbs/user/140876.xlsm

Gib mal in N22 ein Ergebnis ein.

Gruß
Nepumuk

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Nepumuk
Geschrieben am: 14.10.2020 06:09:00

Ooooooooooooops,

da ist noch ein Fehler im Code.

Private Sub UserForm_Initialize()
    
    Dim lngRow As Long, lngIndex As Long
    
    For lngRow = 8 To 22
        
        If Cells(lngRow, 7).Value = 0 Then
            
            lngIndex = lngIndex + 1
            Controls("Label" & CStr(lngIndex)).Caption = Cells(lngRow, 2).Value
            Controls("Label" & CStr(lngIndex + 20)).Caption = Cells(lngRow, 3).Value
            Controls("Label" & CStr(lngIndex + 40)).Caption = Cells(lngRow, 4).Value
            Controls("Label" & CStr(lngIndex + 60)).Caption = Cells(lngRow, 5).Value
            Controls("Label" & CStr(lngIndex + 80)).Caption = Cells(lngRow, 6).Value
            Controls("Label" & CStr(lngIndex + 100)).Caption = _
                Evaluate(Cells(lngRow, 2).Value & Cells(lngRow, 3).Value & Cells(lngRow, 4).Value)
            Set Controls("Image" & CStr(lngIndex)).Picture = Image0.Picture
        End If
        
        If Cells(lngRow, 15).Value = 0 Then
            
            Controls("Label" & CStr(lngIndex + 120)).Caption = Cells(lngRow, 10).Value
            Controls("Label" & CStr(lngIndex + 140)).Caption = Cells(lngRow, 11).Value
            Controls("Label" & CStr(lngIndex + 160)).Caption = Cells(lngRow, 12).Value
            Controls("Label" & CStr(lngIndex + 180)).Caption = Cells(lngRow, 13).Value
            Controls("Label" & CStr(lngIndex + 200)).Caption = Cells(lngRow, 14).Value
            Controls("Label" & CStr(lngIndex + 220)).Caption = _
                Evaluate(Cells(lngRow, 10).Value & Cells(lngRow, 11).Value & Cells(lngRow, 12).Value)
            Set Controls("Image" & CStr(lngIndex + 20)).Picture = Image0.Picture
            
        End If
    Next
End Sub

Gruß
Nepumuk

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Markus Lehmann
Geschrieben am: 14.10.2020 07:18:49

Danke vielmals....

Ein Fehler???

Bei mir hat der 1. Test funktioniert.

Habe aber auch den alten Code mal durch den Neuen überschrieben. Da fiel mir auf, dass die rechte Spalte nicht ganz so gut aussieht, wie die linke Spalte. Da wurde nie so zusammengerückt. Wenn es richtig war, wurde "frei" gelassen und nicht aufgerückt.

Das sah beim 1. Code besser aus.

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Nepumuk
Geschrieben am: 14.10.2020 07:24:14

Hallo Markus,

das einzige was ich im Code geändert habe, ist diese Abfrage:
If Cells(lngRow, 15).Value = 0 Then

Gruß
Nepumuk

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Nepumuk
Geschrieben am: 14.10.2020 07:34:22

Hallo Markus

nicht aufgerückt, so:

Private Sub UserForm_Initialize()
    
    Dim lngRow As Long, lngIndex As Long
    
    For lngRow = 8 To 22
        
        lngIndex = lngIndex + 1
        
        If Cells(lngRow, 7).Value = 0 Then
            
            Controls("Label" & CStr(lngIndex)).Caption = Cells(lngRow, 2).Value
            Controls("Label" & CStr(lngIndex + 20)).Caption = Cells(lngRow, 3).Value
            Controls("Label" & CStr(lngIndex + 40)).Caption = Cells(lngRow, 4).Value
            Controls("Label" & CStr(lngIndex + 60)).Caption = Cells(lngRow, 5).Value
            Controls("Label" & CStr(lngIndex + 80)).Caption = Cells(lngRow, 6).Value
            Controls("Label" & CStr(lngIndex + 100)).Caption = _
                Evaluate(Cells(lngRow, 2).Value & Cells(lngRow, 3).Value & Cells(lngRow, 4).Value)
            Set Controls("Image" & CStr(lngIndex)).Picture = Image0.Picture
        End If
        
        If Cells(lngRow, 15).Value = 0 Then
            
            Controls("Label" & CStr(lngIndex + 120)).Caption = Cells(lngRow, 10).Value
            Controls("Label" & CStr(lngIndex + 140)).Caption = Cells(lngRow, 11).Value
            Controls("Label" & CStr(lngIndex + 160)).Caption = Cells(lngRow, 12).Value
            Controls("Label" & CStr(lngIndex + 180)).Caption = Cells(lngRow, 13).Value
            Controls("Label" & CStr(lngIndex + 200)).Caption = Cells(lngRow, 14).Value
            Controls("Label" & CStr(lngIndex + 220)).Caption = _
                Evaluate(Cells(lngRow, 10).Value & Cells(lngRow, 11).Value & Cells(lngRow, 12).Value)
            Set Controls("Image" & CStr(lngIndex + 20)).Picture = Image0.Picture
            
        End If
    Next
End Sub

Gruß
Nepumuk

Betrifft: nachgefragt
von: ralf_b
Geschrieben am: 13.10.2020 15:52:11

Hattest du das für deine Rechenmaschine nicht schon vor einer Weile, möglicherweise in anderen Foren, nachgefragt? Ich meine mich dunkel daran zu erinnern. Wenn ja, was ist denn dabei rausgekommen?

Wird es dazu auch andere Blätter geben? ( Multiplikation usw.)
Wann wir die Zeit gestartet und wann (bei welchem Auslöser) soll die Zeit gestoppt werden?
Reicht dir evtl auch eine einfache Messagebox mit den Auswertungsinfos? Messagebox ist nicht so variable mit grafischen Abwandlungen, aber einfacher.

Betrifft: AW: nachgefragt
von: Markus Lehmann
Geschrieben am: 13.10.2020 23:12:15

Hallo Ralf,

ja..ich hatte schon einige Fragen ins Forum gestellt. Und ja...ich habe mein Rechenprogramm auch für die Subtraktion, Multiplikation und Division ausgelegt. Aber ganz fertig ist das Programm noch nicht. :-)

Aber ich bin auf einem guten Weg, dank der Hilfe hier im Forum!!!

Die Zeit soll für die Stoppuhr starten, wenn die erste Eingabe eines Ergebnisses getan wurde und die Stoppuhr endet, wenn das 10. Ergebnis eingetragen wurde. 10 Aufgaben soll es ja bei dieser Übung geben.

Das habe ich aber bereits durch ein Makro erledigt. Habe meine Beispieldatei nur aufs Nötigste begrenzt.

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Daniel
Geschrieben am: 13.10.2020 15:53:34

Hi
ich würde hier über die Userform nur die Information geben, wieviele Antworten richtig sind und wieviele Falsch sind und ggf welche Zeit benötigt wurde, vielleicht auch mit einer Einschätzung der Leistung.

die Anzeige der falsch gelösten aufgaben würde ich in der Tabelle selber realisieren, in dem ich die richtig gelösten Aufgaben ausblende, so dass nur die falsch gelösten sichtbar bleiben, mit der Aufforderung, diese nochmal zu korrigieren.
das Ein- und ausblenden kannst du komplett über bedingte Formatierung regeln, so dass du nichts, bzw ganz wenig programmieren musst.
Auch ist es aufwendig, in der Userform dieselbe Optik zu bekommen wie in der Tabelle, also ist es sinnvoller, in der Tabelle zu bleiben.

Gruß Daniel

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Markus Lehmann
Geschrieben am: 13.10.2020 23:15:24

Hallo Daniel. Das wäre auch eine Möglichkeit wg. der besseren bildlichen Darstellung. Wie würde ich das aber mit der bedingten Formatierung am besten hinbekommen??? Eine Userform nur mit ein paar wenigen Infos und wie könnte dann meine Übersicht mit der Formatierung aussehen?

Hast Du auch eine Idee, wie die Userform automatisch eingeblendet werden kann, wenn das letzte Ergebnis eingetragen wurde?

Betrifft: AW: Anzeige Zellinhalt in Userform
von: Daniel
Geschrieben am: 13.10.2020 23:53:47

Wie du das am besten hinbekommst, weiß ich auch nicht.
Ist ja nur so ein Gedanke.

Du könntest beispielsweise in einer Zelle über die Funktion
ANZAHL ermittelt, in wieviele Zellen ein Ergebnis eingetragen wurde.
Diese Zelle fragst du im Calculate-Event ab und wenn die Zahl erreicht wurde, die der Anzahl der Aufgaben entspricht, startet du die Userform.

Diese Zelle kannst du auch für die bedingte Formatierung nutzen, um die korrekt beantworteten Zeilen auszublenden.
Wenn in der Zelle die Anzahl erreicht ist und die Zeile richtig beantwortet ist, dann wird das Zahlenformat der Zelle auf ;;; gesetzt, damit wird nichts mehr angezeigt.

Wie gesagt, nur mal so als Gedankenansatz
Die fertige Lösung sollte dann schon von dir kommen.