anoniem Geplaatst: 26 januari 2002 Delen Geplaatst: 26 januari 2002 Hallo, In een dienstrooster moeten, even simpel gezegd, de vroege, late en nachtdiensten per dag geteld worden. Biedt Excel de mogelijkheid om op te tellen d.m.v. de achtergrondkleur van een cel of de tekstkleur van de waarde in de cel? Alvast bedankt voor het meedenken. Dirk Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 Mogen het ook tekstuele kleuren zijn? :wink: Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 D'r is er hier vast wel een die de rgb-code tevoorschijn kan toveren met vb... Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 [quote:cf7314d02f] Op 27-01-2002 16:16, schreef FlvanSon: D'r is er hier vast wel een die de rgb-code tevoorschijn kan toveren met vb... [/quote:cf7314d02f] Ja, de rgb-code is niet zo lastig. Onderstaande code laat de achtergrond rood worden: [code:1:cf7314d02f] Object.BackColor = RGB(255, 0, 0) [/code:1:cf7314d02f] Het probleem is dat dit volgens mij alleen met besturingselementen werkt, en niet met cellen. Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 Ja hoor, tekstkleur is ook geen probleem als het daarmee lukt. De celeigenschap is sowieso tekst. Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 -Dat was een geintje, Kreeble- rdk: Begrijp verder niets van VB maar in de VBHelp staat onder Color iets over gegeven óf ingesteld worden(voorbeelden gaan jammer genoeg alleen over ingesteld worden); daaronder bij (b.v.) Interior staat ook de [b:b64afa555f]cel[/b:b64afa555f] genoemd. ??? Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 Klopt, je kunt idd ook de kleuren van een cel bepalen of bekijken: [code:1:f535d9a889] If Worksheets("Blad1").Range("A2").Interior.Color = RGB(255, 0, 0) Then [/code:1:f535d9a889] Maar het lijkt me toch ietwat omslachtig op deze wijze. Waarom niet gewerkt met drie kolommen? Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 Ik heb nog ff zitten stoeien, en op onderstaande wijze worden de waarden van alle gele cellen in A1 t/m A10 opgeteld in A11. [code:1:b8414a465b] Private Sub CommandButton1_Click() With ActiveWorkbook.Worksheets("Blad1").Range("A1:A10") For Each c In Worksheets("Blad1").Range("A1:A10").Cells If c.Interior.Color = RGB(255, 255, 0) Then Worksheets("Blad1").Range("A11").Value = Worksheets("Blad1").Range("A11").Value + c.Value End If Next c End With End Sub [/code:1:b8414a465b] [ Dit Bericht is bewerkt door: rdk op 2002-01-27 18:59 ] Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 rdk, Heb je stukje code even geprobeerd, en het doet bijna wat ik bedoel. Alleen geeft hij de som niet aan, maar toont de gevonden aantallen (7-15 7-15 7-15). Hier zou dus eigenlijk 3 moeten staan. In je code gebruik je voor de kleur geel Interior.Color = RGB(255, 255, 0). Als ik, een macro makend, de opvulkleur geel kies, gebruikt Excel de code Selection.Interior .ColorIndex = 6 .Pattern = xlSolid In dit "gele" geval wordt er dus wel geteld, maar wat voor RGB code gebruik ik bijvoorbeeld voor een pastelkleurtje? Of kan ik de ColorIndex-waarde gebruiken? Mvg, Dirk Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 Ik dacht dat je de som van een aantal waarden wilde hebben, maar het gaat dus om het aantal keren dat iets voorkomt. Onderstaand voorbeeld telt het aantal keren dat een cel rood of geel is: [code:1:d80e6c989d] Private Sub CommandButton1_Click() With ActiveWorkbook.Worksheets("Blad1").Range("A1:A10") For Each c In Worksheets("Blad1").Range("A1:A10").Cells If c.Interior.Color = RGB(255, 255, 0) Then Worksheets("Blad1").Range("A11").Value = Worksheets("Blad1").Range("A11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("A1:A10").Cells If c.Interior.Color = RGB(255, 0, 0) Then Worksheets("Blad1").Range("A12").Value = Worksheets("Blad1").Range("A12").Value + 1 End If Next c End With End Sub [/code:1:d80e6c989d] Een overzicht van RGB-codes kun je vinden op: [url]http://www.dsdelft.nl/html/index.html [/url] Succes. Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 [quote:bbfafb5951] Op 27-01-2002 18:17, schreef rdk: Waarom niet gewerkt met drie kolommen? [/quote:bbfafb5951] Of één, met 'n lettertje(Vroeg, Laat of Nacht), met AANTAL.ALS(), en gewone Voorwaardelijke opmaak op 't lettertje. Dit is ook mooi, hoor :wink: Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 Hoi rdk, Bedankt, dit is inderdaad een basis om op verder te gaan. Er worden nu alleen nog teveel cellen geteld, omdat er in de kolommen cellen samengevoegd zijn. En dat mag er niet af. Dan zou tekstkleur wellicht een optie zijn, maar kan dit? Of is de code zo aan te passen, dat er specifiek gekeken wordt naar bepaalde cellen? Verder werken we met een vierwekelijks rooster, dus zou er ook een stukje code moeten worden ingebakken om alle 28 dagen in één keer te tellen. Snap je 't allemaal nog? Is het anders wellicht handig als ik je een roostertje e-mail? Ik hoor het wel. Opnieuw dank, Dirk Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 FlvanSon (oude rot), Was het maar zo makkelijk. Als er alleen maar gewerkt werd met deze standaarddiensten, kon ik volstaan met V,L of N. Het zou hier alleen een te lang verhaal worden om alles uit te leggen. Maar binnen het rooster worden er ook nog andere (uren)tellingen verricht, en daar heb ik de cijfertjes weer voor nodig. Maar bedankt voor het meedenken natuurlijk! Groet, Dirk Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 [quote:2961ce5933] Op 27-01-2002 23:46, schreef Kreeble: Er worden nu alleen nog teveel cellen geteld, omdat er in de kolommen cellen samengevoegd zijn. En dat mag er niet af. [/quote:2961ce5933] Je zult vast een goede reden hebben om de cellen samen te voegen :wink:, maar dat kunnen we in de optelsom uitsluiten door alleen te zoeken naar niet-lege cellen: [code:1:2961ce5933] Private Sub CommandButton1_Click() With ActiveWorkbook.Worksheets("Blad1").Range("A1:A10") Worksheets("Blad1").Range("A11").Value = 0 Worksheets("Blad1").Range("A12").Value = 0 For Each c In Worksheets("Blad1").Range("A1:A10").Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value > 0 Then Worksheets("Blad1").Range("A11").Value = Worksheets("Blad1").Range("A11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("A1:A10").Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value > 0 Then Worksheets("Blad1").Range("A12").Value = Worksheets("Blad1").Range("A12").Value + 1 End If Next c End With End Sub [/code:1:2961ce5933] [ Dit Bericht is bewerkt door: rdk op 2002-01-28 00:08 ] Quote Link naar reactie
anoniem Geplaatst: 27 januari 2002 Auteur Delen Geplaatst: 27 januari 2002 Zo gaat 't in 't echt ook hé: hindernissen terwijl U werkt :wink: Quote Link naar reactie
anoniem Geplaatst: 29 januari 2002 Auteur Delen Geplaatst: 29 januari 2002 Hoi rdk, Bedankt! Je laatste code werkt perfect, met dank ook aan je verwijzing naar de "kleurtjes" pagina. Wellicht kun je me ook helpen de hele 4-wekelijkse periode in één keer te tellen. Ik ben helemaal niet thuis in het VB taaltje, maar ik neem aan dat zoiets ook te programmeren is. Van jouw voorbeeld uitgaand wordt de eerste dag geteld uit de range A1:B10 (2 kolommen dus!).De uitkomst in A11, A12 etc. De tweede dag is de range C1:D10, en de uitkomst in C11, C12 etc. Met 28 dagen zouden de laatste 2 kolommen de range BC1:BD10 hebben. Zou je er eens over na willen denken? Met dank, Dirk Quote Link naar reactie
anoniem Geplaatst: 29 januari 2002 Auteur Delen Geplaatst: 29 januari 2002 Dirk, in onderstaand voorbeeld worden de totalen in cellen E11 en E12 geplaatst. De totale range gaat al wel uit van datgene wat jij aangaf: [code:1:2f0245091a] 'totalen Worksheets("Blad1").Range("E11").Value = 0 Worksheets("Blad1").Range("E12").Value = 0 For Each c In Worksheets("Blad1").Range("A1:BD10").Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value > 0 Then Worksheets("Blad1").Range("E11").Value = Worksheets("Blad1").Range("E11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("A1:BD10").Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value > 0 Then Worksheets("Blad1").Range("E12").Value = Worksheets("Blad1").Range("E12").Value + 1 End If Next c [/code:1:2f0245091a] Dit moet ingepast worden in het vorige voorbeeld, voor de [b:2f0245091a]End Sub[/b:2f0245091a]. Succes, RdK. Quote Link naar reactie
anoniem Geplaatst: 29 januari 2002 Auteur Delen Geplaatst: 29 januari 2002 Rdk, Het lijkt wel alsof je het vaker doet! Maar ik moet iets duidelijker zijn begrijp ik. Je code werkt hoor, prima zelfs, maar je verstaat onder "in één keer tellen" iets anders dan ik bedoel. Voor de duidelijkheid: Kolom A = namen medewerkers (40 man) Kolom B:C = dag 1 - kolom D:E = dag 2 - kolom F:G = dag 3 etc. De laatste dag in vierwekelijkse periode zijn de kolommen BD:BE Met behulp van je voorlaatste code worden bv. de vroege en late diensten alleen van dag 1 geteld. Voor de resterende 27 dagen wordt nog niets ingevuld, en dat had ik graag anders gezien. Ik hoef dus geen totalen te zien van alle diensten in de hele periode. Waar het me om gaat is dat ik na het invoeren van een periode onderaan kan zien of er voldaan wordt aan een minimale bezetting per dag voor elke dienst (V, L, N). Met een voorwaardelijke celopmaak kan ik dan de fouten die in de planning gemaakt direct zien. Ik hoop dat deze uitleg duidelijk maakt wat m'n bedoeling is. Groeten, Dirk Quote Link naar reactie
anoniem Geplaatst: 29 januari 2002 Auteur Delen Geplaatst: 29 januari 2002 Dan moet dit het volgens mij zijn. Onderstaande rekent drie dagen uit. Met wat kopieer- en plakwerk (en aanpassen van de cellen) kun je dit zelf wel tot 28 dagen uitbreiden: [code:1:5157bb3369] Private Sub CommandButton1_Click() 'dag 1 Worksheets("Blad1").Range("C11").Value = 0 Worksheets("Blad1").Range("C12").Value = 0 For Each c In Worksheets("Blad1").Range("B1:C10").Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value > 0 Then Worksheets("Blad1").Range("C11").Value = Worksheets("Blad1").Range("C11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("B1:C10").Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value > 0 Then Worksheets("Blad1").Range("C12").Value = Worksheets("Blad1").Range("C12").Value + 1 End If Next c 'dag 2 Worksheets("Blad1").Range("E11").Value = 0 Worksheets("Blad1").Range("E12").Value = 0 For Each c In Worksheets("Blad1").Range("D1:E10").Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value > 0 Then Worksheets("Blad1").Range("E11").Value = Worksheets("Blad1").Range("E11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("D1:E10").Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value > 0 Then Worksheets("Blad1").Range("E12").Value = Worksheets("Blad1").Range("E12").Value + 1 End If Next c 'dag 3 Worksheets("Blad1").Range("G11").Value = 0 Worksheets("Blad1").Range("G12").Value = 0 For Each c In Worksheets("Blad1").Range("F1:G10").Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value > 0 Then Worksheets("Blad1").Range("G11").Value = Worksheets("Blad1").Range("G11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("F1:G10").Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value > 0 Then Worksheets("Blad1").Range("G12").Value = Worksheets("Blad1").Range("G12").Value + 1 End If Next c End Sub [/code:1:5157bb3369] Quote Link naar reactie
anoniem Geplaatst: 29 januari 2002 Auteur Delen Geplaatst: 29 januari 2002 Rdk, Dit is het. TOP! Geweldig bedankt voor de genomen moeite. Tot een volgende keer maar weer. Groeten, Dirk Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen