(excel) aanpassen celkleur met dropdownmenu

Pagina: 1
Acties:
  • 1.202 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • Tweakable
  • Registratie: Mei 2005
  • Laatst online: 30-04 07:25
Dag tweakers,

Ik wil dmv een dropdownmenu een cel een kleur geven maar ook dmv datzelfde dropdownmenu een andere cel ook een kleur geven. En als het zou kunnen ook op dezelfde manier de kleuren weghalen.

Vb.
Agenda: ma-di-wo-do-vr
met dd menu kies ik wo, deze wordt zwart
met dd menu kies ik vr, deze moet ook zwart worden.
met dd menu kies ik weer voor wo, dan moet deze weer blanco worden.

Iemand enig idee?

Alvast bedankt.
Mede-tweaker

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
VBA, macro opnemen en F1

Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Ik had toch niets beters te doen...

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Option Explicit

Const zwart As Integer = 1
Const kleurloos As Integer = -4142

Dim gestart As Boolean

Dim dagen As Collection
Dim cellen As Collection


Sub veranderKleur(cel As Range)
    Dim kleur As Integer
    kleur = cel.Interior.ColorIndex
    
    If kleur <> zwart Then
        kleur = zwart
    Else
        kleur = kleurloos
    End If
    
    cel.Interior.ColorIndex = kleur
        
End Sub

Private Sub cboDag_Click()
    Dim dag As String
    dag = cboDag.Value
    
    If dag = "" Then Exit Sub

    veranderKleur cellen(dag)
    
    cboDag.Value = ""
End Sub

Private Sub cboDag_DropButtonClick()
    If Not gestart Then start
End Sub

Private Sub Worksheet_Activate()
    If Not gestart Then start
End Sub

Sub start()
    vulDagenEnCellen
    zetDagenInComboBox
    
    gestart = True
End Sub

Sub zetDagenInComboBox()
    cboDag.Clear
    
    Dim index As Integer
    For index = 1 To dagen.Count
        cboDag.AddItem dagen(index)
    Next
End Sub

Sub voegDagEnCelToe(dag As String, cel As String)
    dagen.Add dag
    cellen.Add Range(cel), dag
End Sub

Sub vulDagenEnCellen()
    Set dagen = New Collection
    Set cellen = New Collection

    voegDagEnCelToe "Maandag", "A1"
    voegDagEnCelToe "Dinsdag", "A2"
    voegDagEnCelToe "Woensdag", "A3"
    voegDagEnCelToe "Donderdag", "A4"
    voegDagEnCelToe "Vrijdag", "A5"
End Sub

Acties:
  • 0 Henk 'm!

  • Tweakable
  • Registratie: Mei 2005
  • Laatst online: 30-04 07:25
Hey

Bedankt voor je reactie ik ga hem er gelijk in zetten!

Mvg
Jeroen

Acties:
  • 0 Henk 'm!

  • Tweakable
  • Registratie: Mei 2005
  • Laatst online: 30-04 07:25
Sub zetDagenInComboBox()
cboDag.Clear

Dim index As Integer
For index = 1 To dagen.Count
cboDag.AddItem dagen(index)
Next
End Sub


Ik krijg een foutmelding (niet definieerd) als ik de macro start. Ik heb in het bovenstaande stukje dikgedrukt en onderstreept waar het fout gaat.
Heeft iemand enig idee waarom dit niet lukt?

Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
De ComboBox (= dropdowngeval) moet je zelf toevoegen (vanaf werkbalk Visual Basic) en de naam cboDag geven.

[edit]
Tweakable schreef op woensdag 14 juni 2006 @ 18:30:
Ik heb in het bovenstaande stukje dikgedrukt en onderstreept waar het fout gaat.
Dat heb je verkeerd. Het pijltje en het gele vlak geven aan waar hij gestopt is met uitvoeren. Het deel dat echt fout is wordt geselecteerd (gewoon blauw).

[ Voor 63% gewijzigd door Daos op 14-06-2006 18:48 ]


Acties:
  • 0 Henk 'm!

Anoniem: 179256

Daos schreef op woensdag 14 juni 2006 @ 18:40:
De ComboBox (= dropdowngeval) moet je zelf toevoegen (vanaf werkbalk Visual Basic) en de naam cboDag geven.

[edit]
[...]

Dat heb je verkeerd. Het pijltje en het gele vlak geven aan waar hij gestopt is met uitvoeren. Het deel dat echt fout is wordt geselecteerd (gewoon blauw).
Hallo Daos,
bedankt het is gelukt.
nu heb ik de macro voor de cellen B5:F5" t.w. Ma,Di,Wo,etc.
hoe kan ik ook de cellen t.w B7:F7, B9:F9, B11:F11 gebruiken?

vriendelijke groeten,
william

Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Ik begrijp niet wat je allemaal wilt doen.

Het is bovendien de bedoeling hier dat je ook iets zelf probeert. Ik had alleen maar even een voorbeeldje gemaakt zodat je iemand weer iets had om mee te spelen.

[ Voor 4% gewijzigd door Daos op 14-06-2006 22:59 . Reden: Ik dacht dat het dezelfde user was :) ]


Acties:
  • 0 Henk 'm!

Anoniem: 179256

Hallo Daos,

even een voorbeeldje, met jouw macro, werkt het voor Gisela, moet ik nu voor elke naam een combobox maken, om de vrije dagen zwart te maken, of vraag ik iets teveel?

maandag dinsdag woensdag donderdag vrijdag
Gisela 7.30 - 13.30 7.30 - 16.00 7.30 - 16.00 7.30 - 16.00
Ard 8.30 - 17.00 8.00 - 16.30 8.30 - 17.00 12.30 - 21.00

Don 7.30 - 16.00 7.30 - 16.00 7.30 - 16.00 7.30 - 16.00

Guido 9.30 - 18.00 8.30 - 17.00 8.30 - 17.00 8.30 - 17.00

Mvg
Jeroen & William

Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je kan inderdaad voor elke regel een combobox maken. Dit maken kan je ook via VBA doen. Dit is wel te vinden hier op GoT of via google.

Je kan ook 2 comboboxen gebruiken. Een voor de mens en de ander voor de dag. Bij het vullen kan je dan het beste alle cellen in een nieuwe collection stoppen (bv mensen). Voorbeeldje:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Dim dagen As Collection
Dim cellen As Collection
Dim mensen As Collection

Sub voegMensToe(mens As String)
    mensen.Add cellen, mens
End Sub

Sub voegCelToe(dag As String, cel As String)
    cellen.Add Range(cel), dag
End Sub

Sub voegDagToe(dag As String)
    dagen.Add dag
End Sub

Sub vul()
    Set mensen = New Collection
    
    Set dagen = New Collection
    voegDagToe "Maandag"
    voegDagToe "Dinsdag"
  
    Set cellen = New Collection
    voegCelToe "Maandag", "A1"
    voegCelToe "Dinsdag", "A2"
    voegMensToe "MensX"

    Set cellen = New Collection
    voegCelToe "Maandag", "B1"
    voegCelToe "Dinsdag", "B2"
    voegMensToe "MensY"
End Sub

Sub test()
    vul
    MsgBox mensen("MensX")("Maandag").Address
    MsgBox mensen("MensY")("Dinsdag").Address
End Sub


Het vullen kan je nog mooier maken met wat loopjes en wat functies. Het click-event van de combobox met de dagen gaat er dan zo uitzien:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Private Sub cboDag_Click()
    Dim dag As String
    Dim mens As String
   
    dag = cboDag.Value
    mens = cboMens.Value
     
    veranderKleur mensen(mens)(dag)
     
    cboDag.Value = ""
End Sub

Acties:
  • 0 Henk 'm!

Anoniem: 179256

Hallo Daos,

Dit ziet er heel goed uit, maar kun je me zeggen of ik de eerste macro, "van het vorige bericht" ook moet gebruiken, of de laatste 2 macro's, welke naam geef ik de twee boxen "mens(en)", en "dag(en)", of ook "cboDag"?
Moet ik ook cellen met namen selecteren en namen definieren? ik was goed op weg, maar nu zit ik toch weer even in de knoop, kun je mij even een stapje verder op weg helpen, houden we de discussie wel centraal?

vriendelijke groeten,
william

[ Voor 14% gewijzigd door Lustucru op 15-06-2006 22:46 ]


Acties:
  • 0 Henk 'm!

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 21:12

edeboeck

mie noow noooothing ...

Ik zie geen topicreports. Wat klopt daar niet aan? Zie ook Policy m.b.t. replies in 'slechte' topics

[ Voor 131% gewijzigd door Lustucru op 15-06-2006 22:45 ]


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Heren Jeroen & William.
Lees eens Algemene gedragsregels (Netiquette) en Policy: Alle regels die op het forum gelden.
Groeten onder de post hoeft niet, maar bovenal, dit is een tweakerforum en geen helpdesk. Probeer dus eerst de antwoorden die Daos geeft te begrijpen, kijk wat de code doet en als je er dan niet uitkomt, geef aan wat je niet begrijpt, wat je hebt gedaan en waar je op vastloopt.

Ontopic: het lijkt erop dat je een rooster aan het maken bent. Is het dan niet veel makkelijker om bv met 1'tjes en 0'letjes te werken en voorwaardelijke opmaak toe te passen?

edit:
met daos hieronder: misschien is het handiger om uit te leggen wat nu je/jullie nu precies willen bereiken met het sheet, zonder meteen in technische oplossingen te denken. Wellicht kan er dan over gediscussieerd worden hoe je e.e.a. het beste aan kunt pakken

[ Voor 36% gewijzigd door Lustucru op 16-06-2006 00:15 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Niesje schreef op donderdag 15 juni 2006 @ 22:41:
Ontopic: het lijkt erop dat je een rooster aan het maken bent. Is het dan niet veel makkelijker om bv met 1'tjes en 0'letjes te werken en voorwaardelijke opmaak toe te passen?
Ik ging ervan uit dat het een eis was dat het met dropdownmenu's moest gebeuren.

Er zijn nog veel meer snellere manieren mogelijk. Je kan bijvoorbeeld ook de kleur laten veranderen in het BeforeDoubleClick-event van je Worksheet. Je hoeft dan alleen op de cellen te dubbelklikken.

Acties:
  • 0 Henk 'm!

Anoniem: 179256

Daos schreef op donderdag 15 juni 2006 @ 23:38:
[...]


Ik ging ervan uit dat het een eis was dat het met dropdownmenu's moest gebeuren.

Er zijn nog veel meer snellere manieren mogelijk. Je kan bijvoorbeeld ook de kleur laten veranderen in het BeforeDoubleClick-event van je Worksheet. Je hoeft dan alleen op de cellen te dubbelklikken.
Hallo Daos,
Jij had het goed, in principe was het de bedoeling, om een dropdown menu te hebben, om de dagen zwart te maken, als je die vrij wilt hebben. je eerste macro, voor één persoon, doet wat ik wil.
Ik zal ook eens kijken, hoe dat gaat met "BeforeDoubleClick-event". bedankt voor jouw reactie.

mvg
William
Pagina: 1