• 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.

Macro cel beveiligen na invoer

Status
Niet open voor verdere reacties.

evamoens

Nieuwe gebruiker
Lid geworden
12 aug 2009
Berichten
3
Hallo iedereen,

Ik ben momenteel bezig om zelf rekenoefeningen te maken op de computer in Excel om te laten maken door de kindjes in mijn klas. Nadat een leerling een oplossing heeft ingegeven, berekent Excel de oplossing en controleert of het correct is of niet. Natuurlijk zijn er dus slimmerds die daarna de oplossing gewoon overnemen. Ik zou dit willen voorkomen met een macro en heb al vanalles opgezocht, maar vind nergens wat ik nodig heb. De macro zou volgens mij iets als volgt moeten zijn, maar ik zou niet weten hoe ik het moet 'vertalen' naar VBA-taal.

Als "iets ingevuld wordt in bv. cel E7"
Dan "moet cel E7 beveiligd worden zodat er niets meer in kan geschreven worden"
Anders "niets"

Ik voeg hierbij het reeds gemaakte bestand zodat jullie een goed beeld krijgen van wat ik bedoel.

Reeds hartelijk bedankt!

Eva
 

Bijlagen

Plaats svp je bestand als xls.

Waarom laat Excel het resultaat van de berekening zien ? Dat is toch niet nodig om de leerling een bericht te geven of het antwoord goed is of niet.

Ik zou bovendien bijhouden hoe vaak een leerling een antwoord 'probeert', dan kun je dat als wegingsfaktor gebruiken.
 
Kun je je vraag iets duidelijker formuleren? Wat wil je nu precies? Wat bedoel je met 'anders kunnen ze de oplossing zo overnemen'?
 
@ snb: Excel laat het resultaat van de berekening pas zien, als de leerling een oplossing invult. Hierdoor ziet een leerling die juist antwoordt een bevestiging van de oplossingswijze die hij/zij gekozen heeft. Een leerling die fout antwoordt, kan aan de hand van het antwoord onderzoeken waar hij in de fout is gegaan, zien of hij/zij begrijpt waarom en de toegepaste oplossingswijze proberen te gebruiken in een volgende oefening. Zelfsturend leren noemen wij dat. Er zijn nog allerlei didactische redenen waarom ik dat doe, maar daar ga ik jullie niet mee lastig vallen. :D

Wel interessant dat je ook kan nagaan hoeveel keer een leerling geprobeerd heeft. Dat ga ik zeker onthouden, misschien dat ik dat later nog wel eens gebruik.

@ RoCompy87: Een leerling bekijkt de oefening, vult zijn resultaat in, daarna wordt deze oefening geëvalueerd (er verschijnt fout of juist) en verschijnt de correcte oplossingswijze met het resultaat. Sommige leerlingen kwamen vorig jaar tot de vaststelling dat ze dat resultaat gewoon konden afkijken nadat ze iets hadden ingevuld en veranderden hun eerste oplossing. Ik kon er dus niet op vertrouwen dat leerlingen die alles juist hadden ook wel effectief de leerstof beheersten. Dat zou ik nu graag verhelpen door ervoor te zorgen dat na het ingeven van een antwoord dit niet meer veranderd kan worden.

In het voorbeeld (bijlage) heb ik de resultaten reeds ingevuld. Als je in de lichtblauwe vakjes de oplossingen verwijdert, zie je het document dat de leerlingen krijgen. Als de leerlingen in dit document werken is het natuurlijk ook zo beveiligd dat ze enkel in de lichtblauwe vakjes kunnen werken. Deze beveiliging heb ik er nu afgehaald voor jullie.

Groetjes,

Eva
 

Bijlagen

Laatst bewerkt:
Hoi Eva,

Met de onderstaande code toegevoegd aan de VBA code van het betreffende werkblad, wordt cel E7 geblokkeerd voor invoer (zie de bijlage). De invoer kan dan dus niet meer gewijzigd worden, maar het kan natuurlijk zijn dat iemand per ongeluk al op enter drukt of ergens anders in het werkblad klikt waardoor deze code geactiveerd wordt.

De string wachtwoord zul je moeten vervangen met het wachtwoord dat je zelf op je werkblad gezet hebt (bijgevoegde bestand heeft dus 'wachtwoord' als wachtwoord).

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    ActiveSheet.Unprotect "wachtwoord"
    
    If Range("E7").Value <> "" Then
        Range("E7").Locked = True
    End If
    
    ActiveSheet.Protect "wachtwoord"
End Sub

Ik heb in het bestand ook een functie gezet om de beveiliging van het blad en van de cel op te heffen zodat je dit niet voor iedere cel apart hoeft te doen telkens.

LET OP! Zet ook een wachtwoord op de VBA code, anders kan iedereen wel erg makkelijk de blokkade opheffen.

p.s.1 Zorg ervoor dat macro's ingeschakeld worden bij het openen van het bestand, anders werkt de code niet
p.s.2 Ik moest het bestand zippen omdat ik geen xlsm (nieuwe excel formaat voor bestanden met macro's) kon invoegen als bijlage
 

Bijlagen

Laatst bewerkt:
Ontzettend bedankt, Vinnie! Dat was inderdaad wat ik nodig had.

Ik heb het voorbije schooljaar een cursus Excel gevolgd om deze oefeningen te kunnen maken, maar macro's werden daar niet gegeven. Toch is het echt wel gemakkelijk om het te kunnen, vind ik. Iemand die een goed boek kent daarover?

Vele groetjes en bedankt iedereen al voor de hulp!

Eva
 
Dit lijkt me beter:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If target.address<>"$E$7" then Exit sub
  ActiveSheet.Unprotect "wachtwoord"
  target.Locked = True
  ActiveSheet.Protect "wachtwoord"
End Sub
 
Bij Bol.com zijn een aantal boeken te vinden over VBA en VBA in Excel in het bijzonder. Ik weet niet welke van deze boeken het best te gebruiken is, maar dat zal toch verschillen van persoon tot persoon.

@snb; dat is ook een mooie oplossing uiteraard
 
Zoek eens op Guy Hart Davis en VBA. Goed leesbaar, niet te technisch, goede opbouw, redelijk compleet.
 
uitbreiding van de ragne

Beste heren,

gelukkig zijn jullie er nog, zit met een probleempje.

Bovenstaand script werkt gigantisch goed, maar kan ik doen om de range uit te breidien naar meerder kolommen.
Dus als er gegevens ingevoerd worden mag er achteraf niets meer gewijzigd kunnen worden, het mag eventueel na afsluiten van het blad.

Thnx JP
 
Hi JP,

Je breekt in op een vraag die 2 jaar oud is en die als opgelost staat.
Je kan beter een nieuwe vraag opstarten !
Hang dan ineens een voorbeeldbestandje met wat je juist wil.

Thx,

Joske
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan