Hoi Sjorske,
Je was er vroeg bij vanochtend
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