• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Gegevensvalidatie met som

Status
Niet open voor verdere reacties.

hcwolters

Gebruiker
Lid geworden
24 sep 2016
Berichten
10
Ik heb drie kolommen waarin een getal moet staan. De som van deze getallen moet ten alle tijde 100 zijn (namelijk 100%). Is dat niet het geval, dan wil ik dat er een pop-up komt met de foutmelding dat de som NIET 100 is.

Kan ik dat via een formule in gegevensvalidatie doen?
(zie bijgevoegd "simpel" bestandje).

Graag aangeven HOE je iets gedaan hebt!
 

Bijlagen

Moet het per se een pop up zijn? Ik zou zelf nl. liever met voorwaardelijke opmaak werken waarbij de cel bv. rood kleurt als het getal afwijkt van 100
 
Nou, anders had ik wel gevraagd om een voorwaardelijke opmaak, die ik overigens zelf wel kan maken. Nee, ik wil een pop-up, een waarschuwing die duidelijk is. Het werkelijk bestand dat ik aan het maken ben wordt door tig mensen gebruikt, slechts een verandering van kleur is niet voldoende.
 
Och. Sommige mensen zijn zich niet bewust van deze mogelijkheid. Dus vandaar ...
 
Probeer de volgende code eens.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

' Wordt een waarde gewijzigd in het aangegeven bereik?
If Not Intersect(Target, Range("A4:C4")) Is Nothing Then
' Zo ja, is het aantal gevulde cellen gelijk aan 3
    If Range("A4:C4").Cells.SpecialCells(xlCellTypeConstants).Count = 3 Then
' Zo ja, is de som gelijk aan 100
        If Range("D4").Value <> 100 Then
' Zo nee, geef kritieke foutmelding
            If MsgBox("De som is niet 100", vbCritical) = vbOK Then Exit Sub
        End If
    End If
End If

End Sub
 
Laatst bewerkt:
Je kan jouw formule die je bij gegevensvalidatie gebruikt hebt aanpassen van
Code:
=SOM(B4:XFD4)<>100
naar
Code:
=SOM(B4:XFD4)[COLOR="#FF0000"]=[/COLOR]100
 
Zou ik die code moeten invoeren in Microsoft Visual Basics? PS, die SOM formule werkt dus niet, dat had ik ook al geprobeerd! Maar voor de moeite om hier ff naar te kijken!
 
Hoe werkt die niet dan? In het voorbeeld bestand werkt het namelijk wel, indien je de formule veranderd. Verder moet je als je de gegevensvalidatie wilt kopiëren of slepen, het bereik vastzetten:

Code:
=SOM($B$4:$D$4)=100
Bekijk bijlage Gegevensvalidatie som.xlsx
 
Laatst bewerkt:
Klopt, mijn fout. Ik had de gegevensvalidatie alleen toegepast in A4, maar het moet zowel in A4, als B4 en C4. Dank!
 
Is het niet een beetje onzinnig? Er valt namelijk nooit wat te wijzigen. De som is al 100 elke wijziging zal de validatie triggeren en krijg je dus een melding. Dus wat het doel hiervan is?
 
Hoi, volgens mij is het aan mij om te bepalen of iets onzinnig is of niet. Heb je enig idee waarvoor ik dit gebruik? Ik had niet gevraagd om een mening, maar iemand die me helpt, en dat is gebeurd! Dank Peter B en abevleeming.
 
volgens mij is het aan mij om te bepalen of iets onzinnig is of niet
Hier heb je volledig gelijk in.

Heb je enig idee waarvoor ik dit gebruik?
Ik heb werkelijk geen idee. Dus vertel...

De code van Peter B zal werken totdat er 3 cellen zijn ingevuld. En dan?

In de aangedragen suggesties kan je straffeloos een cel leegmaken en dan is de som geen 100 meer....

Maar als het werkt dan een :thumb: voor abevleeming en Peter B
 
Ok,

het betreft hier het bepalen van een cijfer voor leerlingen. Het volgende:

We hebben een toets die (maximaal) bestaat uit 3 onderdelen: "Use of English", "Reading" en "Listening". Voor ieder onderdeel krijgt de leerling een apart cijfer. Echter telt ieder onderdeel ook voor een bepaald percentage mee. Zou je alle 3 onderdelen toetsen, dan is ieder onder resp. 33%, 33% en 34% waard. Echter gebeurd dit niet altijd. Soms wordt er maar 1 or 2 onderdelen getoetst. Als mensen dan het xls-bestand invullen, moet hen gewezen worden op het feit dat de dan getoetste onderdelen samen wèl 100% zijn - i.e. 50% en 50%. Er moet dus continue gelet worden op de som van 100, en deze mag dus nooit meer of minder zijn.

Heb je een slimmer idee om dit te doen, want het is een feit dat de pop-up pas verdwijnt wanneer 100 is bereikt.
 
Kan je dit even in een verhelderend voorbeeldje zetten. Dus met een aantal leerlingen, waar de cijfers ingevuld worden/zijn en waar het goed en fout gaat? Misschien dat ik er dan iets van ga begrijpen?
 
We hebben een toets die (maximaal) bestaat uit 3 onderdelen: "Use of English", "Reading" en "Listening". Voor ieder onderdeel krijgt de leerling een apart cijfer. Echter telt ieder onderdeel ook voor een bepaald percentage mee. Zou je alle 3 onderdelen toetsen, dan is ieder onder resp. 33%, 33% en 34% waard. Echter gebeurd dit niet altijd. Soms wordt er maar 1 or 2 onderdelen getoetst. Als mensen dan het xls-bestand invullen, moet hen gewezen worden op het feit dat de dan getoetste onderdelen samen wèl 100% zijn - i.e. 50% en 50%. Er moet dus continue gelet worden op de som van 100, en deze mag dus nooit meer of minder zijn.
 
OK. Dat had ik er niet uitgehaald. Ik ben er vanuit gegaan dat er altijd 3 getallen ingevuld moesten worden die dan (als ze alle 3 zijn ingevuld) samen 100 moeten zijn. Er staat in de originele vraag immers "Ik heb drie kolommen waarin een getal moet staan". Mijn macro controleert dan ook of het totaal 100 is als alle 3 de getallen ingevuld zijn. Dit kan natuurlijk 100, 0, 0 zijn

Maar goed. Nu is het dus kennelijk zo dat er 3 gevallen geldig zijn:
Invullen 1 waarde (moet dan dus 100 zijn)
Invullen 2 waarden (moeten dan dus samen 100 zijn, dus beide 50)
Invullen 3 waarden (moeten dan dus samen 100 zijn, dus 33, 33 en 34)

Het lijkt mij dan logischer dat men aangeeft welke onderdelen er getoetst worden met bv. een "x" (ik neem tenminste aan dat de kolom er dan als volgt uit ziet)
Code:
kolom1      kolom2      kolom3
English     Reading     Listening
    x           x
                               x
    x           x              x
etc.

En dan in de formule verwerking iets doen met "COUNTA" of specifieker "COUNTIF"
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan