Write your own activeX control. You'd have properties for the minimum and maximum values, plus the number of blocks to draw for (max - min). When the current value exceeded the value needed to draw a block, you would use the .line method on the form inside a loop to draw the correct size box (don't forget to include white-space between the blocks!). Handling the colors is even easier... you decide a starting and ending color, and calculate a color increment. Every line you draw uses the new color, then increments the current color value.
Or, look through an issue of VBPJ magazine to see if someone is selling a control close to what you want.
Chip H.