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

voorwaardelijke opmaakprobleem

Status
Niet open voor verdere reacties.

sjorske

Gebruiker
Lid geworden
5 aug 2004
Berichten
7
Kan iemand mij vertellen hoe ik bij voorwaardelijke opmaak>rand een dikke lijn kan in kan voegen. Hier staan bij mij alleen dunne lijntjes.
 
Hoi Sjorske,

Ik vrees (nou ja zo erg is het ook weer niet) dat je hiervoor VBA moet gebruiken. De standaard Voorwaardelijke opmaak heeft niet dezelfde eigenschappen als Celopmaak.

Jeroen
 
Ik ben tot mijn grote spijt niet thuis in VBA. Als iemand hierover duidelijk uitleg kan geven lukt het misschien toch wel.
 
Hoi Sjorske,

Geen kennis of ervaring met VBA. Dat wordt een uitdaging. Positief bekijken, als het lukt zal je blik op Excel veranderen.

Wat ik van je wil weten is wat je als voorwaardelijke opmaak hebt staan waarmee je nu dunne lijnen kan maken en welke cellen in Excel moeten aan deze voorwaarden gaan voldoen.

Jeroen
 
De bedoeling is dat op een formulier de gewerkte en overuren ingevuld worden bij de desbetreffende percentages. De mogelijkheid bestaat om de overuren gedeeltelijk uit te laten betalen en gedeeltelijk als OV (onbetaald verlof) terug te krijgen. Door nu een vinkje te zetten wordt deze overuren automatisch in OV-bij gezet, maar de administratie wil graag een dikke lijn om het overurenhokje omdat ze anders niet doorhebben dat het OV uren zijn. Zie bijgevoegde bestand.
 

Bijlagen

Hoi Sjorske,

Je was er vroeg bij vanochtend :o

Ik hoop dat ik het een beetje goed gedaan heb:
Allereerst openen we de VBA-editor:
Klik met je rechtermuisknop op het tabje van het werkblad, in het menuutje verschijnt onderin Programmacode weergeven. Klik hierop. Je komt nu in een 'verborgen' gedeelte achter Excel waarin het mogelijk is functies, macro's en programma's in Excel te maken. Je kopieert de onderstaande tekst en plakt deze in de programmacode:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Not Intersect(Target, Union(Range("J8:J14"), Range("J16:J22"), Range("J24:J30"), Range("J32:J38"), Range("J40:J46"), Range("J48:J49"))) Is Nothing Then
If Target.Rows.Count + Target.Columns.Count > 2 Then ActiveCell.Select
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Union(Range("J8:J14"), Range("J16:J22"), Range("J24:J30"), Range("J32:J38"), Range("J40:J46"), Range("J48:J49"))) Is Nothing Then
If Target <> "" Then
With Target.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Target.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Target.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Target.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Else
With Target.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
If Target.Offset(-1, 0) = "" Then
With Target.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
If Target.Offset(1, 0) = "" Then
With Target.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
With Target.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

End If
End If
End Sub

Wat doet de code:
Allereerst Worksheet_SelectionChange dit wordt een event (gebeurtenis) genoemd In dit geval wordt de code gestart bij een SelectionChange zeg maar een verandering van active cel. De code die er staat voorkomt een foutmelding als je een groter gebied kiest met cellen uit de programmacode.

Worksheet_Change ook een event, dat reageert op een Change oftewel een verandering in een cel.

Omdat niet iedere cel omlijnt moet worden maar slechts een klein aantal namelijk Kolom J selecteren we eerst die cellen met:
If Not Intersect(Target, Union(Range("J8:J14"), Range("J16:J22"), Range("J24:J30"), Range("J32:J38"), Range("J40:J46"), Range("J48:J49"))) Is Nothing Then
Je ziet dat ik met Union de verschillende cellen (Ranges) aan elkaar plak, Target is de cursor, Intersect is de overlap van twee bereiken (in dit geval dus de Target en de Union)

Nu kunnen er twee dingen gebeuren, je kunt iets in de cel zetten of je kunt 'm leeg maken. Voor beide gevallen moet je de opmaak regelen omdat je anders na verloop van tijd alleen maar omrande cellen krijgt.

Ik hoop dat je een beetje kan volgen wat er gebeurt en eventueel in staat bent om kleine aanpassingen te maken als dat nodig is.

Jeroen
 
Hoi Jeroen,

Bedankt voor de hulp. Zelfs ík snap hoe het werkt. Zal de lat toch nog iets hoger moeten leggen. De bedoeling is dat de cellen bij de percentages een dikke zwarte rand krijgen ipv bij OV-uren. Bij voorwaardelijke opmaak zou dan voor cel P8 moeten staan: =EN(J8>0;P8>0)=>dikke rand en voor Q16: =EN(J16>0;Q16>0)enz. Dus de rand moet pas om de cel komen als er aan twee voorwaarden zijn voldaan.Ben benieuwd of je hier nog uit komt. Ik had nog een vraagje. Is het niet makkelijker om de hele kolom J8:J49 te selecteren ipv de afzonderlijke weken. en voor de percentagekolommen O8:V49? Jeroen, mocht het toch lukken, bij voorbaat hartelijk dank.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan