Een lezer uit Tsjechië vroeg naar het maken van een in-cell-diagram om een percentage te illustreren.
Als de waarde in een cel 37% was, hoe kan ik dan 37% van de cel vanaf de onderkant vullen met een kleur?

Mala Singh van onze grafische afdeling bedacht deze interessante oplossing om het gewenste effect te bereiken. Mala heeft een werkblad gemaakt waarin elke rij feitelijk uit 2 samengevoegde rijen bestaat. Cellen B2 en B3 worden samengevoegd in één cel. Wanneer de waarde in B2 wordt gewijzigd, zal een beetje VBA-code in het werkbladvenster automatisch de hoogte van rij 2 en rij 3 aanpassen. Cel C3 is blauw gekleurd en cel C2 is wit gekleurd. Het effect is dat kolom C een kolomdiagram in de cel lijkt te tonen. Deze afbeelding toont verschillende hoogtes van de blauwe balk in de cellen C2 tot en met C13.

De eerste stap is om de cellen B2 en B3 samen te voegen tot één cel. U selecteert de cellen B2 en B3. Selecteer Formaat, Cellen in het menu. Ga naar het tabblad Uitlijning. Schakel het selectievakje Cellen samenvoegen in. Hierdoor werken B2 en B3 als een enkele cel met de naam B2.
Verlaat cel C2 zonder vulling en gebruik een kleurvulling voor cel C3.
Code voor deze techniek wordt niet in een reguliere module geplaatst. Het is "event handler" -code en moet op de codemodule voor dit specifieke werkblad worden geplaatst. Lees Gebeurtenismacro om pad en bestandsnaam toe te voegen aan Excel Header-artikel voor een visuele weergave van hoe u de codemodule voor een werkblad opent.
Voer de volgende code in op de codemodule voor Blad1 (of welk blad u ook gebruikt).
Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target.Cells If cell.Column = 2 And cell.Row> 1 Then If cell.Value> 1 Or cell.Value < 0 Then cell.Select MsgBox ("Value must be between 0 and 100%") End If If IsEmpty(cell) Or cell.Value = 0 Then cell.Range("B1:B2").RowHeight = 25 'cell.Range("B2").Interior.ColorIndex = xlNone Else On Error Resume Next cell.Range("B1").RowHeight = 50 * (1 - cell.Value) With cell.Range("B2") .RowHeight = 50 * cell.Value '.Interior.Color = RGB(0, 0, 255) On Error GoTo 0 End With End If End If Next End Sub
U kunt het proces van het samenvoegen van cellenparen in kolom B herhalen.
Met dank aan Mala Singh voor deze oplossing. Mala kan op maat gemaakte kaartoplossingen ontwerpen om aan elke behoefte te voldoen. Hij heeft bijgedragen aan het diagramhoofdstuk in VBA en macro's voor Excel.