VBA Draw-boxen met code
Er zijn veel redenen waarom je programmatisch dozen zou willen kunnen tekenen, zou een geautomatiseerd Gantt-diagram cool zijn? Hier is een manier om het te doen.
Dit is de basiscode om een doos te tekenen:
12345678910 | ActiveSheet.Shapes.AddShape _(msoShapeFlowchartProcess, 0, 0, 48, 12.75).SelecteerSelectie.ShapeRange.Fill.ForeColor.SchemeColor = 11Selectie.ShapeRange.Fill.SolidSelection.ShapeRange.Fill.Visible = msoTrue |
Het is echt niet zo ontmoedigend, er zijn maar twee opvallende dingen om naar te kijken; Schemecolor is uiteraard de kleur en de 0,0,48,12.75.
Dus wat is de 0,0,48,12.75? Gewoon de linkerpositie, bovenste positie, breedte en hoogte. U kunt deze naar wens aanpassen, door de eerste twee aan te passen om de positie van de dozen op het scherm te wijzigen en de laatste twee om de grootte van de doos te wijzigen. Ik heb deze afmetingen gebruikt omdat ze een goede gok waren om een doos zo groot als een cel te maken.
En hier is de code die wordt gebruikt om de groene vakken in de bovenstaande afbeelding dynamisch te tekenen:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | Sub DynamicBoxes()Dim x als dubbel'Hierdoor ontstaan horizontale dozenVoor x = 0 tot 240 Stap 48'verwijzing naar de 4 cijfers links, boven, breedte, hoogte'ActiveSheet.Shapes.AddShape _(msoShapeFlowchartProcess, x, 0, 48, 12.75).SelecteerSelectie.ShapeRange.Fill.ForeColor.SchemeColor = 11Selectie.ShapeRange.Fill.SolidSelection.ShapeRange.Fill.Visible = msoTrueVolgende x'Hierdoor worden verticale dozen'Voor x = 0 tot 127,5 Stap 12,75ActiveSheet.Shapes.AddShape _(msoShapeFlowchartProcess, 0, x, 48, 12.75).SelecteerSelectie.ShapeRange.Fill.ForeColor.SchemeColor = 11Selectie.ShapeRange.Fill.SolidSelection.ShapeRange.Fill.Visible = msoTrueVolgende xEinde sub |