Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Voorwaardelijke opmaak  (gelezen 6379 keer)

0 leden en 1 gast bekijken dit topic.

Offline Derks

  • Nieuw lid
  • Berichten: 5
  • Oplossing.be
Voorwaardelijke opmaak
« Gepost op: 04 oktober 2005, 09:30:36 »
Hallo,
Ik had een vraag over voorwaardelijk opmaak. Momenteel kan ik maar 3 waardes invullen. Maar wat ik eigenlijk wil is het volgende.
Als ik een 1 invul wordt de celopmaak rood, bij een 2 geel, bij een 3 groen, bij een 4 paars enz. met 10 verschillende opties.
Hoe moet/kan ik nu de 3 opties uitbreiden naar 10.
Ik heb al vanalles gezocht maar kan het niet vinden.
Alvast bedankt.

IK hoor het wel
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:Voorwaardelijke opmaak
« Reactie #1 Gepost op: 04 oktober 2005, 19:04:25 »
IMHO kan dit enkel via VBA.

Gebruik iets in de stijl van selection change, waarbij je als selectie de cellen neemt waarvan je de kleur wilt wijzigen. Vervolgens neem je in de code op dat je door de cellen gaat, en voor elke cel nagaat welke waarde ze heeft. Gebruik hierbij dan best een Select case, en de code voor celopmaak is dan zoiets in de stijl van:
With Selection.Interior
        .ColorIndex = 6
        .Pattern = xlSolid
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline firmin

  • Ervaren lid
  • ***
  • Berichten: 442
  • Geslacht: Man
  • Excel Specialist
Re:Voorwaardelijke opmaak
« Reactie #2 Gepost op: 04 oktober 2005, 21:04:37 »
Hello

Zoals reeds gezegd, gaat dit prima via VB
Open VB en kies voor een module
onder general  declaration zet je volgende sub
Sub kleuren()
With Sheets("sheet1")
For Each c In Range("a:a")
If c = 1 Then
c.Interior.ColorIndex = 14
End If
If c = 2 Then
c.Interior.ColorIndex = 6
End If
If c = 3 Then
c.Interior.ColorIndex = 4
End If
Next
End With
End Sub
tussen de laatste End If en de Next kunnen nog meerdere nummers en kleuren gezet worden.

Daarna kies je in de browser voor This Workbook.
In het rechter venster kies je voor SheetChanges

U krijgt dan onderstaande

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
kleuren
End Sub

Zoals je ziet heb ik tussen Sub en End Sub kleuren gezet.
Dat is de code die uitgeschreven is onder general/declaration

De Range("A:A") verander je eventueel volgens de kolommen in gebruik Range("A:E") bv.

Iedere keer je een nummer in een cel intoetst zal deze na enter kleuren.

Firmin
PB easynote LE69KB,AMD quad-core,1000GB HDD,AMD Radeon HD8330,8GB DDR3
Windows 10,office 2007
MSE, Internet Explorer 11

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:Voorwaardelijke opmaak
« Reactie #3 Gepost op: 04 oktober 2005, 21:49:54 »
 * "  For Each c In Range("a:a")  "

Dit lijkt mij onnodig en tijdrovend. Oplossing: Bereken met een formule het aantal cellen dat getallen bevat (in bv. kolom A), en doe dan een loop van 1 tot als dat aantal bereikt is. Je loopt dus door de cellen van kolom A, en dan kan je nog schrijven dat wanneer een cel leeg is, je naar de volgende cel gaat (xlDown).

 * In plaats van de if-structuren, neem een case-structuur. Veel handiger:

Select case c.value
case = 1
c.Interior.ColorIndex = 14

case = 2
c.Interior.ColorIndex = 6

case = 3
c.Interior.ColorIndex = 4

...

' eventueel een Case else nemen voor alle overige waarden (let op: waarde 0 is er dan ook bij.)
End select


Greetz,

WG

 * If c = 1 Then ...    If c = 1 Then ...   If c = 1 Then ...

Neem c.value in plaats van c, al komt het hier op hetzelfde neer.
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline Derks

  • Nieuw lid
  • Berichten: 5
  • Oplossing.be
Re:Voorwaardelijke opmaak
« Reactie #4 Gepost op: 05 oktober 2005, 07:24:37 »
en in nederlands??
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:Voorwaardelijke opmaak
« Reactie #5 Gepost op: 05 oktober 2005, 09:06:11 »
Sorry Derks, vanavond post ik hierover wat uitvoeriger met de nodige tussenstappen...
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline Derks

  • Nieuw lid
  • Berichten: 5
  • Oplossing.be
Re:Voorwaardelijke opmaak
« Reactie #6 Gepost op: 05 oktober 2005, 09:09:33 »
dat zou fijn zijn

Alvast bedankt.

PS. ik weet niet exact wat u bedoeld met (in het rechter venster kies je voor sheetchanges)

(ben ook weer niet zo goed vertrouwd met excel)
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline buks

  • Ervaren lid
  • ***
  • Berichten: 313
  • Oplossing.be
Re:Voorwaardelijke opmaak
« Reactie #7 Gepost op: 05 oktober 2005, 11:19:04 »
Hallo,

De voorwaardlijke opmaak kan je niet in Excel zelf uitbreiden buiten die 3 opmaken.  Echter zoals je in de andere antwoorden reeds gezien hebt is er ook nog VBA.  Dit is een programma waarin je code kunt schrijven die standaard in Excel zit, pas volgende werkwijze toe :

Start Excel op en open het gewenste bestandje waarin je wilt werken (neemt voor alle veiligheid eerst een kopie van het origineel).

Druk Alt+F11, hierdoor start je de VBA-editor op.

Druk nu Ctrl+R, hiermee toon je de projectverkenner.  Hierin zal je nu alle werkbladen zien.

Dubbelklik op het gewenste werkblad en er verschijnt een nieuw venster waarin je programmacode kunt invullen. Bovenaan dit nieuwe venster zie je twee keuzelijsten. links kies je "Worksheet", daarna rechts de optie "Change".

Nu verschijnt het volgende :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

End Sub

Plaats de cursor op de lege rij en kopiėėr volgende code op die plaats :

Dim x As Range
    For Each x In ActiveSheet.UsedRange
        With x
        Select Case .Value
          Case Is = "1"
              .Interior.Color = RGB(255, 0, 0)
          Case Is = "2"
              .Interior.Color = RGB(255, 240, 10)
          Case Is = "3"
              .Interior.Color = RGB(0, 255, 0)
          Case Is = "4"
              .Interior.Color = RGB(0, 0, 255)
        End Select
    End With
   Next



Voor meerder kleuren voeg je telkens 2 lijnen toe :
   Case Is = "viel hier nummer of tekst in"
         .Interior.Color = RGB(x,x,x)

de x-waarden van RGB( , , ) zijn de waarde voor je kleuren rood, groen en blauw.  Indien je niet weet welke kleur welke waarde heeft kan je dit vlug opzoeken :
Ga naar excel/Extra/Opties/Kleuren, Kies Wijzigen en Aangepast.  Bepaal hier het kleur dat je precies wenst (eerst op het grote vlak en dan met het rechter balkje) en kijk bij "rood", "groen" en "blauw" naar de waarden en vul deze in de code in op de x-plaatsen RGB(x,x,x)

Op de wijze worden de kleuren ook toegepast indien je met formules werkt zodat het resultaat bekeken wordt en niet de formule.

Het gebruik van Color in plaats van ColorIndex heeft voor mij de voorkeur, want met Color bepaal je de preciese kleur en bij ColorIndex is de kleur afhankelijk van hoe de kleuren zijn ingesteld in Excel.

Groetjes

PS: indien niet duidelijk moet je maar iets laten weten
Win 7 Home - Intel Core i3 CPU 550 @ 3.20GHz - Basicnet XL - IE 9 - MS Office 2010 - Norton Internet Security 2012

Offline Derks

  • Nieuw lid
  • Berichten: 5
  • Oplossing.be
Re:Voorwaardelijke opmaak
« Reactie #8 Gepost op: 05 oktober 2005, 14:59:40 »
Kan ik zo ook bepaalde cellen selecteren (waarde a4:e878)?

En als ik de waarde weer wis. Kan dan ook automatisch weer blanco worden (geen vulwaarde)

Voor de rest alvast enorm bedankt
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:Voorwaardelijke opmaak
« Reactie #9 Gepost op: 05 oktober 2005, 15:42:01 »
Derks,

De code die eerder voorgesteld werd, wordt uitgevoerd bij elke wijziging ergens in je werkblad. Als je dit wil beperken tot a4:e878 doe je:

Dim x As Range
    For Each x In ActiveSheet.Range("A4:E878")
        With x
        ...
        End Select
    End With
  Next

Waarde wissen en blanco cel:
Dit is eigenlijk hetzelfde verhaal, maar dan met een extra case, nl. Case Else. Dit zijn alle andere mogelijke waarden voor de cellen, waaronder de lege cel. De opmaak die je hieraan toewijst is 'geen opmaak'.

Dus, alles bij mekaar:

Dim x As Range
    For Each x In ActiveSheet.Range("A4:E878")
        With x
        Select Case .Value
          Case Is = "1"
              .Interior.Color = RGB(255, 0, 0)
          Case Is = "2"
              .Interior.Color = RGB(255, 240, 10)
          Case Is = "3"
              .Interior.Color = RGB(0, 255, 0)
          Case Is = "4"
              .Interior.Color = RGB(0, 0, 255)
          Case Else
              .Interior.ColorIndex = xlNone
        End Select
    End With
  Next

Voilą

WG
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline Derks

  • Nieuw lid
  • Berichten: 5
  • Oplossing.be
Re:Voorwaardelijke opmaak
« Reactie #10 Gepost op: 05 oktober 2005, 16:12:28 »
Harstikke bedankt.

Maar nu zit ik weer met een nieuw probleem mijn CTRL Z (ongedaan maken) doet ut niet meer. Komt dat door de VBA of door iets anders.   ???
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:Voorwaardelijke opmaak
« Reactie #11 Gepost op: 05 oktober 2005, 16:20:59 »

 - Ctrl Z marcheert niet? Excel afsluiten en terug opstarten?

 - addendum bij mijn laatste post:

Het programma (met name cellen nagaan en een kleurtje al dan niet toewijzen) wordt uitgevoerd bij elke wijziging, ongeacht waar, op je werkblad. Dit lijkt mij niet zo verstandig als je weet dat de wijzigingen die geėvalueerd moeten worden toch maar voorkomen in A4:E878. Deze range beperken is niet moeilijk:

Als eerste regel onder de private sub ...

If Not Application.Intersect(Range("A4:E878"), Target) Is Nothing Then


En als laatste regels voeg je toe:

Else
End if




WG
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline buks

  • Ervaren lid
  • ***
  • Berichten: 313
  • Oplossing.be
Re:Voorwaardelijke opmaak
« Reactie #12 Gepost op: 05 oktober 2005, 19:45:11 »
Harstikke bedankt.

Maar nu zit ik weer met een nieuw probleem mijn CTRL Z (ongedaan maken) doet ut niet meer. Komt dat door de VBA of door iets anders.   ???

Telkens je VBA-code uitvoert zal de optie "ongedaan maken" geleegt worden, hierdoor lijkt het dus of ze niet meer beschikbaar is.  Als je na het uitvoeren van de code iets anders ingeeft zal dit weer gewoon werken.

groetjes
Win 7 Home - Intel Core i3 CPU 550 @ 3.20GHz - Basicnet XL - IE 9 - MS Office 2010 - Norton Internet Security 2012

 


www.combell.com