Excel goeroe's gevraagd!
17 oktober 2006 - 16:20   
geplaatst door: macsmet
Hallo,

Ik ben op zoek naar een functie/script in excel maar weet niet goed hoe te beginnen (waarschijnlijk kan het alleen met Visual Basic).

Ik wil graag dat als ik in een cel klik dat daar dan een 'X' in wordt geplaatst.
Het is ook leuk als dan de achtergrond van de cel verandert. Of beide?
Met een dubbelklik zou dan de situatie weer hersteld moeten worden (dus geen 'X' en geen achtergrondkleur).

Weet iemand hoe dit moet?

Alvast bedankt,

MacSmet


CamelCaps | Educatieve Software - http://www.camelcaps.nl
Excel goeroe's gevraagd!
17 oktober 2006 - 17:10    reactie #1
geplaatst door: AppleCase
De klik weet ik niet, ik vermoed inderdaad macro's of viasual basic als het al kan. Met de kleur kan ik je wel helpen:

> open je Excel document
> selecteer de cel(len) die van kleur moet(en) veranderen
> format
> conditonal formatting
> zorg dat hier komt te staan 'cell value is' + 'equal to' en in het invulvak  ='x'
> klik op format
> selecteer een kleur bij 'patern'
> en eventueel andere opmaak eigenschappen
> ok
> ok
> klaar!

Nu het klikken nog...

(Bewerkt door AppleCase om 17:11, 17-10-2006)

            All people are made of stars -  Moby
Excel goeroe's gevraagd!
17 oktober 2006 - 17:26    reactie #2
geplaatst door: macsmet
@ Appelcase: alvast bedankt hiervoor! Het werkt prima.

Ik denk ook dat het met Visual Basic moet maar ik heb echt geen idee hoe dat moet.

Wie helpt?

MacSmet

CamelCaps | Educatieve Software - http://www.camelcaps.nl
Excel goeroe's gevraagd!
17 oktober 2006 - 17:49    reactie #3
geplaatst door: Beer
Een makkelijke start is het opnemen van de bovenbeschreven macro via Tools, Macro..
Daarna doe je alt F11 en zie je de macro in visual basic. Die kan je daarna gebruiken als start voor een uitgebreider visual basic programma.
Maar ik weet niet of je het aanklikken van een cel kan gebruiken om een macro te starten. Dat zou ik eerst uit moeten proberen. Op mijn iBook heb ik helaas geen Excel, dus dat zal even duren.
Excel goeroe's gevraagd!
17 oktober 2006 - 19:49    reactie #4
geplaatst door: LuckyLuke
@ macsmet wat wil je met die functionaliteit doen?
als je zoiets maakt als jij schetst kun je dus niet meer door je excel sheet klikken. De waarde van elke cel waar je op klikt zal een x in verschijnen en als je er per ongeluk nog een keer op klikt staat er niet meer.

Meestal zijn er vele wegen die naar Rome leiden....

Excel goeroe's gevraagd!
17 oktober 2006 - 20:16    reactie #5
geplaatst door: macsmet
@ Lucky Luke: ik maak een Leerlingvolgsysteem in Excel.
Met deze functie hoeven de leerkrachten dan dus niet iedere keer een letter in te typen (de X) om aan te geven wat het niveau is van de leerling maar kunnen dan gewoon met hun muis klikken. Dat werkt veel sneller!
Dus als jij weet hoe dit moet dan hoor ik het graag.

MacSmet

CamelCaps | Educatieve Software - http://www.camelcaps.nl
Excel goeroe's gevraagd!
17 oktober 2006 - 21:03    reactie #6
geplaatst door: 2D
Kun je niet gewoon een checkbox of een optionbutton toevoegen? Dat lijkt me toch een stuk eenvoudiger dan een stuk VB(a) schrijven.....
Excel goeroe's gevraagd!
17 oktober 2006 - 21:13    reactie #7
geplaatst door: macsmet
@2D: die checkbox of optionbutton heb ik geprobeerd en dat lukt prima maar het zijn zoveel vakjes dat het bestand dramatisch groot werd en supertraag. Bovendien hebben we voor iedere leerling zo'n bestand nodig en met 275 leerlingen neemt dat wel erg veel MB's in beslag.

De optie die ik zoek is ook mooier en leuker en ik hoop dat er iemand is die zegt hoe dat moet.

MacSmet

CamelCaps | Educatieve Software - http://www.camelcaps.nl
Excel goeroe's gevraagd!
17 oktober 2006 - 21:31    reactie #8
geplaatst door: 2D
Het moet natuurlijk gewoon kunnen, maar zo te zien niet via VBA (de VB-achtige omgeving in Excel). Daar zit geen onClick() achtig commando in. Vanuit normaal VB moet het wel kunnen, maar daar heb ik te weinig kennis van. Waarom gebruik je niet een database?
Excel goeroe's gevraagd!
17 oktober 2006 - 21:37    reactie #9
geplaatst door: macsmet
Ik heb gekozen voor Excel omdat de 'opmerking' functie handig is.
Bij de keuze van een niveau kan de leerkracht heel snel zien wat de eisen zijn om aan dat niveau te voldoen.

Een database kan natuurlijk ook maar Access is niet echt mijn ding maar Filemaker heb ik lang gelden wel eens geprobeerd. Wie weet? Voorlopig ga ik voor Excel....

MacSmet

CamelCaps | Educatieve Software - http://www.camelcaps.nl
Excel goeroe's gevraagd!
17 oktober 2006 - 23:00    reactie #10
geplaatst door: Beer
Heb je dit al geprobeerd?
http://www.ozgrid.com/VBA/run-macros-change.htm

en anders zou ik eens het worksheet_SelectionChange commando proberen, zoals bijv gebruikt (mmar dan anders) in http://www.pcreview.co.uk/forums/thread-954348.php

Excel goeroe's gevraagd!
18 oktober 2006 - 09:06    reactie #11
geplaatst door: LuckyLuke
Ik heb even zitten kijken maar volgens mij kan het niet in Excel zoals jij dat graag wil.
Een oplossing zit in de tweede link die Beer heeft gegeven en de andere zou zijn dat je een dialoog venster maakt.
Daarin kun je een pulldownmenu maken voor de namen van de leerlingen en radiobuttons voor aan/uit.
Excel goeroe's gevraagd!
18 oktober 2006 - 10:21    reactie #12
geplaatst door: macsmet
@ Beer en Lucky Luke: ik zal vandaag even naar de tweede link van Beer kijken.
Bedankt!

MacSmet

CamelCaps | Educatieve Software - http://www.camelcaps.nl
Excel goeroe's gevraagd!
18 oktober 2006 - 11:22    reactie #13
geplaatst door: LuckyLuke
MacSmet het komt er op neer dat je het volgende doet.

Je maakt een Marco die een x of spatie in een cel zet bijvoorbeeld zoiets.
Sub klikken()
   If ActiveCell.Value = "X" Then
   ActiveCell.Value = " "
   Else
       If ActiveCell.Value = " " Then
       ActiveCell.Value = "X"
       End If
   End If
End Sub

Dan koppel je deze macro aan een tekenobject die je transparant en zonder lijnen maakt en op/in de cel plaatst.
Let op in mijn voorbeeld moet je wel eerst de gewenste cel selecteren anders wijzig je ergens anders de inhoud van een cel. Voordeel is zo wel dat je dit kunt kopieren zonder de formule aan te hoeven passen.

Hoor wel wat je ervan bakt.

Excel goeroe's gevraagd!
18 oktober 2006 - 11:27    reactie #14
geplaatst door: Beer
In de Windows versie van Excel werkt het inderdaad op deze manier:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

If IsEmpty(ActiveCell.Value) Then
   ActiveCell.Value = "X"
   With Selection.Interior
       .ColorIndex = 3
       .Pattern = xlSolid
       .PatternColorIndex = xlAutomatic
   End With
Else
   ActiveCell.Value = ""
   With Selection.Interior
       .ColorIndex = 0
       .Pattern = xlSolid
       .PatternColorIndex = xlAutomatic
   End With
End If

End Sub

(Bewerkt door Beer om 20:34, 18-10-2006)

Excel goeroe's gevraagd!
18 oktober 2006 - 15:28    reactie #15
geplaatst door: Thomas
"If Microsoft Excel is the solution; can we please have the problem back?"
:biggrin:
Wat ik hier uitkraam is puur mijn persoonlijke mening.
Excel goeroe's gevraagd!
30 oktober 2006 - 16:49    reactie #16
geplaatst door: macsmet
@Beer: jouw code werkt prima, bedankt!

Als ik echter het bestand beveilig krijg ik foutmeldingen m.b.t de code: ColorIndex = 3
De kleur wordt dan niet geplaatst maar wel de letter X.

Is dit nog op te lossen?
Kun je dus ook nog cellen beveiligen zonder dat er een foutmelding komt?

Bedankt!

MacSmet

CamelCaps | Educatieve Software - http://www.camelcaps.nl
Excel goeroe's gevraagd!
30 oktober 2006 - 19:01    reactie #17
geplaatst door: LuckyLuke
@ Thomas .. met die spreuk ben ik het helemaal eens. Alleen soms zijn de middelen beperkt en krijg je dat soort zaken.

@ MacSmet volgens mij zou je kunnen proberen door het als volgt op te lossen. Waarschijnlijk is de hele sheet beveiligd de cellen die je wilt wijzigen zul je dus niet moeten beveiligen. Dit kun je doen door op die cellen te gaan staan en dan bij celeigenschappen en dan bij protection/beveiliging het vinkje bij geblokkeerd/locked weg te halen. Als het werkblad dan beveiligd wordt dan blijven de cellen waar het vinkje bij weg is gehaald "bewerkbaar".

Excel goeroe's gevraagd!
31 oktober 2006 - 09:35    reactie #18
geplaatst door: macsmet
@ lucky Luke: misschien was ik niet helemaal duidelijk maar jouw suggestie heb ik al gedaan.
Cellen die ik wil wijzigen zijn niet beveiligd en andersom.
Als ik dan het blad beveilig dan krijg ik dus een foutmelding.
Ook bij de cellen die niet geblokkeerd zijn!

Ik krijg dan dus de foutmelding mbt de code: ColorIndex = 3 .

Iemand nog suggesties?

MacSmet

CamelCaps | Educatieve Software - http://www.camelcaps.nl
Excel goeroe's gevraagd!
2 november 2007 - 18:36    reactie #19
geplaatst door: ericpeeterskessel
Hoi voer de code van beer in met 2 weizigingen erin.

Namelijk met deze Regel:  ActiveSheet.Unprotect ("Hier je wachtwoord invullen")  direct onder de Private Sub regel , en onderaan boven de End sub regel vul je dan deze regel in: ActiveSheet.Protect ("hier je wachtwoord invullen")

Het stuk waar staat hier je wachtwoord invullen daar vul je het wachtwoord waarmee je je werkblad beveiligd hebt in. nu zal hij iedere keer als hij deze code uitvoert de beveiliging opheffen en aan het einde weer opnieuw inschakelen. (je wachtwoord is nu wel zichtbaar in de code als je dit wilt voorkomen moet je de vb codes met een wachtwoord beveiligen zodat ze niet meer zonder wachtwoord zichtbaar zijn)

Je kunt ook nog 1 weiziging maken als je het wilt hij maakt nu de cel bij een 2de keer klikken weer leeg en wit van kleur (standaard is het geen opvulling en blijven de randen van de cellen dus zichtbaar als je dit terug wilt moet je dit stuk:

.ColorIndex = 0
      .Pattern = xlSolid
      .PatternColorIndex = xlAutomatic

vervangen door

Selection.Interior.ColorIndex = xlNone

ik heb hieronder de complete code gezet (met een lege opvulling in plaats van een witte opvulling):

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
ActiveSheet.Unprotect ("Hier je wachtwoord invullen")
If IsEmpty(ActiveCell.Value) Then
  ActiveCell.Value = "X"
  With Selection.Interior
      .ColorIndex = 3
      .Pattern = xlSolid
      .PatternColorIndex = xlAutomatic
  End With
Else
  ActiveCell.Value = ""
  With Selection.Interior
     Selection.Interior.ColorIndex = xlNone
  End With
End If
ActiveSheet.Protect ("hier je wachtwoord invullen")

End Sub

(Bewerkt door ericpeeterskessel om 18:43, 2-11-2007)