MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 15.04.2019, 10:03   #1
PaffDZD
Neuer Benutzer
Neuer Benutzer
Standard VBA - Auswertung von 800 Zellen

Ich habe ein Sheet("Übung") in dem die Zellen A1 bis T40 entweder den Wert "b", "p", "q" oder "d" enthalten.
Wenn eine Zelle angeklickt wird, ändert sich die Zellfarbe von weiß auf einen gelbton und bei erneutem Anklicken auch wieder auf weiß zurück. Das funktioniert soweit.

Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Range("A1:T40"), Target) Is Nothing Then Exit Sub
        If Target.Interior.Color = RGB(255, 255, 255) Then
            Target.Interior.Color = RGB(255, 255, 204)
        Else
        If Target.Interior.Color = RGB(255, 255, 204) Then
            Target.Interior.Color = RGB(255, 255, 255)
        End If
    End If
End Sub
Es handelt sich um eine Aufgabe um die Konzentration zu trainieren.
Ziel ist es, dass der Anwender alle Zellen anklicken soll, die ein "q" enthalten.
Nach Abschluss des Tests soll ausgewertet werden wie oft so zu sagen der User richtig gelegen (also "q") ausgewählt und wie oft er falsch lag (also ein "q" vergessen hat anzuklicken, bzw. einen falschen Buchstaben ausgewählt hat.

Ich hatte jetzt angefangen jede einzelne Zelle auch einzeln auszuwerten:
Code:

  If Sheets("Übung").Range("A1").Interior.Color = RGB(255, 255, 255) Then
        Sheets("Container").Range("A11").Value = 1
        Else: Sheets("Container").Range("A11").Value = 0
Nur macht das wenig Sinn, denn ich müsste es für 800 Zellen programmieren.
Und damit habe ich dann erst ausgewertet ob die Zelle richtig oder falsch markiert wurde. (Bei einem "q" müsste also der Wert 1 ausgegeben werden, wenn die Zellfarbe bei 255, 255, 204 ist).

In der Auswertung soll berücksichtigt werden:
1.) Wie viele der 40 Zeilen (Aufgaben) bearbeitet wurden. Das stelle ich mir reltiv einfach vor, denn sobald in einer Zeile etwas angeklickt wurde gab es eine Veränderung und die Zeile gilt als bearbeitet.
2.) Von den gelösten Aufgaben muss unterschieden werden in richtig/falsch gelöste Aufgaben.
3.) Man soll nachschauen können wo man etwas richtig angeklickt hat (Zelle = hellgrün), etwas falsch angklickt hat (Zelle = hellrot) und wo man etwas vergessen hat anzuklicken (roter Zellrahmen und fettes, rotes q, mit gelbem Zellrahmen)

Ich stehe echt auf dem Schlauch wie ich die Auswertung bewerkstelligen kann.
PaffDZD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 10:15   #2
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

Zellnamen lassen sich zusammensetzen. Hier ein Beispiel, wo jeweils die 1. Zelle jeder 2. Zeile gefärbt wird:
Code:

Sub tt()

    Dim i           As Long
    Dim Zellname    As String
    
    For i = 1 To 10
    
        If i Mod 2 = 0 Then
            Zellname = "a" & i
            Range(Zellname).Interior.Color = RGB(255, 255, 204)
        End If
    Next i
End Sub

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 10:20   #3
PaffDZD
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Ralf,

ok. Damit könnte ich ggf. Punkt 3 lösen.
Fehlen mir nur noch 1. und 2.
PaffDZD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 10:22   #4
Flotter Feger
MOF Profi
MOF Profi
Standard

Hallo,

protokolliere doch gleich mit, welche Zelle geklickt wurde.
Code:

Dim ZählerB As Long
Dim ZählerD As Long
Dim ZählerP As Long
Dim ZählerQ As Long

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Range("A1:T40"), Target) Is Nothing Then Exit Sub
        If Target.Interior.Color = RGB(255, 255, 255) Then
            Target.Interior.Color = RGB(255, 255, 204)
            Select Case Target.Text
            Case "b": ZählerB = ZählerB + 1
            Case "d": ZählerD = ZählerD + 1
            Case "p": ZählerP = ZählerP + 1
            Case "q": ZählerQ = ZählerQ + 1

            End Select
        Else
        If Target.Interior.Color = RGB(255, 255, 204) Then
            Target.Interior.Color = RGB(255, 255, 255)
            Select Case Target.Text
            Case "b": ZählerB = ZählerB - 1
            Case "d": ZählerD = ZählerD - 1
            Case "p": ZählerP = ZählerP - 1
            Case "q": ZählerQ = ZählerQ - 1
            End Select
        End If
    End If
End Sub
Worksheet_SelectionChange funktioniert allerdings nur, wenn der Probant immer erst eine andere Zelle anklickt. Stellt der Probant einen Fehler fest, kann er den nicht sofort in der gleichen Zelle korrigieren, da sich der SelectionChange in der selben Zelle nicht ändert.

__________________

VG Sabina

Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
War der Post für dich hilfreich, darf er von dir auch gerne positiv bewertet werden.
bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Flotter Feger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 10:28   #5
PaffDZD
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo FlotterFeger,

Das Mitzählen ist eine gute Idee. Wie werte ich nachher die mitgezählten Buchstaben aus?

Der Hinweis mit der nicht sofort möglichen Korrektur ist mir bekannt. Danke für den Hinweis. :-*
PaffDZD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 10:40   #6
Flotter Feger
MOF Profi
MOF Profi
Standard

Hallo,

du kannst die Variablen abfragen ...

Code:

MsgBox ZählerQ
zeigt dir doch an, wie viele "q" geklickt wurden.
Du kannst mein Beispiel auch ausbauen.
So kannst du vier Collections anlegen und bei jedem Klick die Zelladresse in die betreffende Collection schreiben, oder eben das Element aus der Collection entfernen.
Über eine Schleife über die Collections, kannst du dann hinterher auswerten welche Zellen geklickt wurden ... ähnlich dem Vorschlag von Ralf.

Das Problem mit dem sofortigen Korrigieren kannst du umgehen, wenn du eine Zelle außerhalb des Sichtbereiches aktivierst. Dann ändert der erneute Klick wieder die gleiche Zelle. Du must nur ausschließen, dass die Zelle mitprotokolliert wird.

__________________

VG Sabina

Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
War der Post für dich hilfreich, darf er von dir auch gerne positiv bewertet werden.
bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit

Geändert von Flotter Feger (15.04.2019 um 10:49 Uhr).
Flotter Feger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 07:45   #7
PaffDZD
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Auf eine so einfache Idee bin ich überhaupt nicht gekommen. Ja klar, wenn ich eine Zelle anwähle, dass ich sie auch zählen kann. Wie doof.

Dann habt ihr bestimmt auch noch eine bessere Idee als ich wie ich das mit der Zeilenauswertung hin bekomme.
Eine Zeile soll also als "bearbeitete Aufgabe" zählen, sobald dort etwas angeklickt wurde (egal ob die Auswahl richtig oder falsch ist), ohne dass ich für jede der 40 Zeilen eine eigene Aswertung starten muss.
Es soll also auch berücksichtigt werden, dass wenn Zeile 1 und Zeile 3 bearbeitet wurden und Zeile 2 ausgelassen wurde, dass dann nur 2 Aufgaben (also Zeilen) als bearbeitet gelten.
PaffDZD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 08:48   #8
Flotter Feger
MOF Profi
MOF Profi
Standard

Hallo,

einen Vorschlag zur Auswertung hat dir doch Ralf gemacht und ich ebenfalls

"So kannst du vier Collections anlegen ... ähnlich dem Vorschlag von Ralf."

__________________

VG Sabina

Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
War der Post für dich hilfreich, darf er von dir auch gerne positiv bewertet werden.
bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Flotter Feger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 09:04   #9
PaffDZD
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Das hab ich getestet. Allerdings wird

Zitat:

jeweils die 1. Zelle jeder 2. Zeile gefärbt

über 10 Wiederholungen hinweg.
Den Sinn verstehe ich nicht, außer dass mit Zellen eingefärbt werden, die eigentlich nur eingefärbt werden sollen, wenn man diese Zelle auch anklickt.

Oder stehe ich hier gerade bei der Verwendung total auf dem Schlauch?

Letztendlich kann ich über "Selection.Row" die Zeile auslesen, in der gerade geklickt wurde.
Jetzt muss ich doch aber irgendwie festhalten, welche Zeilen schon bearbeitet wurden.
Z.B. könnte ich das Sheets("Container") nutzen um z.B. in Column A in den Zeilen 1-4 zu dokumentieren ob eine Zeile bearbeitet wurde.
Also z.B. Value = 0 bei noch ncht bearbeitet und Value = 1 bei bearbeitet. Dann könnte ich hinterher über eine Addition berechnen wie viele Aufgaben gelöst wurden.

Geändert von PaffDZD (16.04.2019 um 09:11 Uhr).
PaffDZD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 09:19   #10
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

>> auf dem Schlauch?

das sollte nur zeigen, wie Zellen per Variable angespochen werden.

>> welche Zeilen schon bearbeitet wurden.

Ich dachte, dazu wolltest Du die Färbung benutzen.

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 09:44   #11
PaffDZD
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Nein, die Färbung dient dazu, dass hier der Anwender glaubt unter Zeitdruck (es ist eine Konzentratinsaufgabe, da im Hintergrund ein Countdown läuft, nach dessen Ablauf die Aufgabe beendet und auf die Auswertungsseite weitergeleitet wird) hier ein "q" zu sehen.
Ich habe mal einen Screenshot angehängt in dem ich die ersten drei Zeilen (Aufgaben) gelöst habe.

Bei der Auswertung, die danach stattfindet müsste jetzt also stehen, dass 3 von 40 Aufgaben gelöst wurden und dabei "x" Fehler gemacht wurden und "y" Zeilen korrekt gelöst wurden.
Zusätzlich soll dann die richtige Lösung angezeigt werden.
In Zeile 1 wurde z.B. ein "q" übersehen (fett, rot und rot umrandet) und ein Buchstabe wurde falsch erkannt (roter Hintergrund). Die richtig markierten werden mit einem grünen Hintergrund dargestellt.
In der Auswertung müsste dann stehen, dass 3 Aufgaben gelöst wurden, wobei 2 Aufgaben richtig und 1 falsch gelöst wurde. Dabei wurden 2 Fehler gemacht.

Die Anzahl der fehler ist einfach, da ich ja über die Variablen im Hintergrund die ausgewählten "b", "d", "p" und "q" mitzählen lasse, wie es FlotterFeger als genialen Einfall hatte.
Angehängte Grafiken
Dateityp: png bdpq.PNG (10,3 KB, 4x aufgerufen)
Dateityp: png bdpq2.PNG (6,2 KB, 6x aufgerufen)
PaffDZD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 15:16   #12
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

ZÄHLENWENNS zählt mit mehreren Kriterien.

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.04.2019, 08:03   #13
PaffDZD
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

So. Beim weiteren Recherchieren bin auf folgende (Teil)Lösung gekommen.
Code:

Dim Zelle As Range
Dim Anzahl1 As Long

Anzahl = 0
For Each Zelle In Range("A1:T1")
If Zelle.Interior.ColorIndex = 19 Then
Anzahl = Anzahl + 1
End If
Next Zelle
Range("V1").Value = Anzahl
So kann ich jetzt wenigstens für jede Zeile eine Auswertung machen ob hier schon etwas angeklickt wurde.
Allerdings müsste ich so diesen Abschnitt immer noch 40 Mal schreiben wodurch der Quellcode unübersichtlich wird.
Wie kann ich das machen, dass diese Auswertung von Zeile zu Zeile fortgeführt wird und jeweils in der Spalte "V" die Auswertung erscheint?
Also in V1 die Auswertung für Zeile 1, in V2 die Auswertung für Zeile 2 und so weiter.
PaffDZD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.04.2019, 09:10   #14
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

mein gestriger Tipp zu ZÄHLENWENNS führt in die Irre, weil die Funktion nur Zellwerte kennt, keine Zelleigenschaften. Bitte um Vergebung.

Anbei eine einfache Lösung.
Angehängte Dateien
Dateityp: xlsm Auseinanderhalten b d p q.xlsm (21,0 KB, 2x aufgerufen)

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.04.2019, 09:28   #15
PaffDZD
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Du, das war doch aber genau der Hinweis, der mich erst einmal weitergebracht hatte.
Deine Datei nehme ich dann jetzt mal auseinander und versuche sie für mich umzusetzten. Ich habe also noch nicht reingeschaut. Eine Rückmeldung dazu kommt also noch.
PaffDZD ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.