<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Scaled In Cell Charting</title>
	<atom:link href="http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/</link>
	<description>Daily posts of Excel tips…and other stuff</description>
	<lastBuildDate>Wed, 08 Feb 2012 23:58:05 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Jon Peltier</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/#comment-22471</link>
		<dc:creator>Jon Peltier</dc:creator>
		<pubDate>Thu, 15 Feb 2007 14:38:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1507#comment-22471</guid>
		<description>&lt;p&gt;Here&#039;s an outstanding rendition of sparklines by Excel MVP Fernando Cinquegrani:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.prodomosua.eu/zips/sparklines.xls&quot; rel=&quot;nofollow&quot;&gt;http://www.prodomosua.eu/zips/sparklines.xls&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;He draws a normal-sized and normal-featured Excel chart in a far away region of the sheet, copies the underlying range, and uses Paste Link Picture to put a dynamic shrunken image of the chart over the desired cell. &lt;/p&gt;
&lt;p&gt;It will fail in 2007 because doing a print preview of a paste linked region that shows a chart hoses the chart. But in versions up to 2003, it is an excellent native sparklines tool. The rest of us can stop now.&lt;/p&gt;
&lt;p&gt;Fernando has come up with dozens of innovative display implementations for Excel:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.prodomosua.eu/ppage02.html&quot; rel=&quot;nofollow&quot;&gt;http://www.prodomosua.eu/ppage02.html&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;(also posted in this thread: &lt;a href=&quot;http://www.dailydoseofexcel.com/archives/2006/02/05/in-cell-charting/&quot; rel=&quot;nofollow&quot;&gt;http://www.dailydoseofexcel.com/archives/2006/02/05/in-cell-charting/&lt;/a&gt;)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Here&#8217;s an outstanding rendition of sparklines by Excel MVP Fernando Cinquegrani:</p>
<p><a href="http://www.prodomosua.eu/zips/sparklines.xls" rel="nofollow">http://www.prodomosua.eu/zips/sparklines.xls</a></p>
<p>He draws a normal-sized and normal-featured Excel chart in a far away region of the sheet, copies the underlying range, and uses Paste Link Picture to put a dynamic shrunken image of the chart over the desired cell. </p>
<p>It will fail in 2007 because doing a print preview of a paste linked region that shows a chart hoses the chart. But in versions up to 2003, it is an excellent native sparklines tool. The rest of us can stop now.</p>
<p>Fernando has come up with dozens of innovative display implementations for Excel:</p>
<p><a href="http://www.prodomosua.eu/ppage02.html" rel="nofollow">http://www.prodomosua.eu/ppage02.html</a> </p>
<p>(also posted in this thread: <a href="http://www.dailydoseofexcel.com/archives/2006/02/05/in-cell-charting/" rel="nofollow">http://www.dailydoseofexcel.com/archives/2006/02/05/in-cell-charting/</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jon Peltier</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/#comment-21913</link>
		<dc:creator>Jon Peltier</dc:creator>
		<pubDate>Thu, 21 Dec 2006 14:03:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1507#comment-21913</guid>
		<description>&lt;p&gt;You don&#039;t want to oversimplify this deletion routine. What if the user accidentally dragged a shape off of its original location? What if a different but important shape happens to be located in the range being cleared? These are why labeling is important. In fact, in one of my iterations (which I may not have posted), the shape name includes the name of the cell it is supposed to cover. The code checkes this name, not the actual top left cell, prior to deletion.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>You don&#8217;t want to oversimplify this deletion routine. What if the user accidentally dragged a shape off of its original location? What if a different but important shape happens to be located in the range being cleared? These are why labeling is important. In fact, in one of my iterations (which I may not have posted), the shape name includes the name of the cell it is supposed to cover. The code checkes this name, not the actual top left cell, prior to deletion.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mr Israel Steinmetz</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/#comment-21907</link>
		<dc:creator>Mr Israel Steinmetz</dc:creator>
		<pubDate>Wed, 20 Dec 2006 19:23:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1507#comment-21907</guid>
		<description>&lt;p&gt;Come to think of it, in the first post, the whole complex ShapeDelete procedure can be replaced with:&lt;/p&gt;
&lt;div style=&quot;overflow: auto; white-space: nowrap;&quot; class=&quot;codecolorer-container vb default&quot;&gt;&lt;div style=&quot;white-space: nowrap;&quot; class=&quot;vb codecolorer&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;Sub&lt;/span&gt; ShapeDelete(rngSelect &lt;span class=&quot;kw1&quot;&gt;As&lt;/span&gt; Range)&lt;br&gt;
&#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Dim&lt;/span&gt; shp &lt;span class=&quot;kw1&quot;&gt;As&lt;/span&gt; Shape&lt;br&gt;
&#160;&lt;br&gt;
&#160; &#160; &lt;span class=&quot;kw1&quot;&gt;For&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Each&lt;/span&gt; shp &lt;span class=&quot;kw1&quot;&gt;In&lt;/span&gt; rngSelect.Worksheet.Shapes&lt;br&gt;
&#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;If&lt;/span&gt; rngSelect.Address = Range(shp.TopLeftCell, shp.BottomRightCell).Address &lt;span class=&quot;kw1&quot;&gt;Then&lt;/span&gt; shp.Delete&lt;br&gt;
&#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Next&lt;/span&gt;&lt;br&gt;
&lt;span class=&quot;kw1&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Sub&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The original (complex) procedure first looks for all shapes intersecting rngSelect, then verifies that they are completely contained in rngSelect, then sets a boolean flag, and finally deletes the shape if flagged. Instead, just delete any shape that is contained in rngSelect. Much simpler, and does the same thing.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Come to think of it, in the first post, the whole complex ShapeDelete procedure can be replaced with:</p>
<div style="overflow: auto; white-space: nowrap;" class="codecolorer-container vb default">
<div style="white-space: nowrap;" class="vb codecolorer"><span class="kw1">Sub</span> ShapeDelete(rngSelect <span class="kw1">As</span> Range)<br />
&nbsp; &nbsp; <span class="kw1">Dim</span> shp <span class="kw1">As</span> Shape<br />
&nbsp;<br />
&nbsp; &nbsp; <span class="kw1">For</span> <span class="kw1">Each</span> shp <span class="kw1">In</span> rngSelect.Worksheet.Shapes<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">If</span> rngSelect.Address = Range(shp.TopLeftCell, shp.BottomRightCell).Address <span class="kw1">Then</span> shp.Delete<br />
&nbsp; &nbsp; <span class="kw1">Next</span><br />
<span class="kw1">End</span> <span class="kw1">Sub</span></div>
</div>
<p>The original (complex) procedure first looks for all shapes intersecting rngSelect, then verifies that they are completely contained in rngSelect, then sets a boolean flag, and finally deletes the shape if flagged. Instead, just delete any shape that is contained in rngSelect. Much simpler, and does the same thing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mr Israel Steinmetz</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/#comment-21841</link>
		<dc:creator>Mr Israel Steinmetz</dc:creator>
		<pubDate>Tue, 12 Dec 2006 18:36:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1507#comment-21841</guid>
		<description>&lt;p&gt;Oops. I meant, replace it with:&lt;/p&gt;
&lt;div style=&quot;overflow: auto; white-space: nowrap;&quot; class=&quot;codecolorer-container vb default&quot;&gt;&lt;div style=&quot;white-space: nowrap;&quot; class=&quot;vb codecolorer&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;If&lt;/span&gt; VerticalScale &lt;span class=&quot;kw1&quot;&gt;Is&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Nothing&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Then&lt;/span&gt;&lt;br&gt;
&#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Set&lt;/span&gt; rScale = Points&lt;br&gt;
&lt;span class=&quot;kw1&quot;&gt;Else&lt;/span&gt;&lt;br&gt;
&#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Set&lt;/span&gt; rScale = Application.Union(Points, VerticalScale)&lt;br&gt;
&lt;span class=&quot;kw1&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;If&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;All of the other conditions are meaningless, they come out to the same thing as a simple Union.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Oops. I meant, replace it with:</p>
<div style="overflow: auto; white-space: nowrap;" class="codecolorer-container vb default">
<div style="white-space: nowrap;" class="vb codecolorer"><span class="kw1">If</span> VerticalScale <span class="kw1">Is</span> <span class="kw1">Nothing</span> <span class="kw1">Then</span><br />
&nbsp; &nbsp; <span class="kw1">Set</span> rScale = Points<br />
<span class="kw1">Else</span><br />
&nbsp; &nbsp; <span class="kw1">Set</span> rScale = Application.Union(Points, VerticalScale)<br />
<span class="kw1">End</span> <span class="kw1">If</span></div>
</div>
<p>All of the other conditions are meaningless, they come out to the same thing as a simple Union.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mr Israel Steinmetz</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/#comment-21840</link>
		<dc:creator>Mr Israel Steinmetz</dc:creator>
		<pubDate>Tue, 12 Dec 2006 17:54:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1507#comment-21840</guid>
		<description>&lt;p&gt;I think it would make sense to replace:&lt;/p&gt;
&lt;div style=&quot;overflow: auto; white-space: nowrap;&quot; class=&quot;codecolorer-container vb default&quot;&gt;&lt;div style=&quot;white-space: nowrap;&quot; class=&quot;vb codecolorer&quot;&gt;&#160; &#160; &lt;span class=&quot;kw1&quot;&gt;If&lt;/span&gt; VerticalScale &lt;span class=&quot;kw1&quot;&gt;Is&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Nothing&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Then&lt;/span&gt;&lt;br&gt;
&#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Set&lt;/span&gt; rScale = Points&lt;br&gt;
&#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Else&lt;/span&gt;&lt;br&gt;
&#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;If&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Not&lt;/span&gt; Application.Intersect(Points, VerticalScale) &lt;span class=&quot;kw1&quot;&gt;Is&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Nothing&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Then&lt;/span&gt;&lt;br&gt;
&#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;If&lt;/span&gt; Application.Intersect(Points, VerticalScale).Address = _&lt;br&gt;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Points.Address &lt;span class=&quot;kw1&quot;&gt;Then&lt;/span&gt;&lt;br&gt;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;br&gt;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Set&lt;/span&gt; rScale = VerticalScale&lt;br&gt;
&#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Else&lt;/span&gt;&lt;br&gt;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Set&lt;/span&gt; rScale = Application.Union(Points, VerticalScale)&lt;br&gt;
&#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;If&lt;/span&gt;&lt;br&gt;
&#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Else&lt;/span&gt;&lt;br&gt;
&#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;Set&lt;/span&gt; rScale = Application.Union(Points, VerticalScale)&lt;br&gt;
&#160; &#160; &#160; &#160; &lt;span class=&quot;kw1&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;If&lt;/span&gt;&lt;br&gt;
&#160; &#160; &lt;span class=&quot;kw1&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;If&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;with:&lt;/p&gt;
&lt;div style=&quot;overflow: auto; white-space: nowrap;&quot; class=&quot;codecolorer-container vb default&quot;&gt;&lt;div style=&quot;white-space: nowrap;&quot; class=&quot;vb codecolorer&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;Set&lt;/span&gt; rScale = Application.Union(Points, VerticalScale)&lt;/div&gt;&lt;/div&gt;
</description>
		<content:encoded><![CDATA[<p>I think it would make sense to replace:</p>
<div style="overflow: auto; white-space: nowrap;" class="codecolorer-container vb default">
<div style="white-space: nowrap;" class="vb codecolorer">&nbsp; &nbsp; <span class="kw1">If</span> VerticalScale <span class="kw1">Is</span> <span class="kw1">Nothing</span> <span class="kw1">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Set</span> rScale = Points<br />
&nbsp; &nbsp; <span class="kw1">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">If</span> <span class="kw1">Not</span> Application.Intersect(Points, VerticalScale) <span class="kw1">Is</span> <span class="kw1">Nothing</span> <span class="kw1">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">If</span> Application.Intersect(Points, VerticalScale).Address = _<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Points.Address <span class="kw1">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Set</span> rScale = VerticalScale<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Set</span> rScale = Application.Union(Points, VerticalScale)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">End</span> <span class="kw1">If</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Set</span> rScale = Application.Union(Points, VerticalScale)<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">End</span> <span class="kw1">If</span><br />
&nbsp; &nbsp; <span class="kw1">End</span> <span class="kw1">If</span></div>
</div>
<p>with:</p>
<div style="overflow: auto; white-space: nowrap;" class="codecolorer-container vb default">
<div style="white-space: nowrap;" class="vb codecolorer"><span class="kw1">Set</span> rScale = Application.Union(Points, VerticalScale)</div>
</div>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fabrice Rimlinger</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/#comment-21621</link>
		<dc:creator>Fabrice Rimlinger</dc:creator>
		<pubDate>Sun, 26 Nov 2006 19:47:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1507#comment-21621</guid>
		<description>&lt;p&gt;Bonjour, &lt;/p&gt;
&lt;p&gt;here is a modest contribution to this post that helped me so much.&lt;br&gt;
another tool on the &quot;in cell&quot; chartind UDF subject, the bullet chart as explained here : &lt;a href=&quot;http://www.exceluser.com/explore/bullet.htm&quot; rel=&quot;nofollow&quot;&gt;http://www.exceluser.com/explore/bullet.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to all contributors...&lt;/p&gt;
&lt;p&gt;Function BulletChart(Mesure As Double, Target As Double, Maxi As Double, Optional Good As Double, Optional Bad As Double) As String&lt;br&gt;
    Const Margin = 2&lt;br&gt;
    Const Thick = 1.5&lt;br&gt;
    Dim rng As Range&lt;br&gt;
    Dim arr() As Variant&lt;br&gt;
    Dim sng As Single, RapTM As Single&lt;br&gt;
    Dim HBckgrnd As Single, HMesure As Single, HTarget As Single&lt;br&gt;
    Dim TopBkgrd As Single, TopMesure As Single, TopTarget As Single&lt;br&gt;
    Dim StrtMesure As Single, StrtTarget As Single, StrtGood As Single, StrtAverage As Single, StrtBad As Single&lt;br&gt;
    Dim EndBckgrd As Single, EndMesure As Single, EndTarget As Single, EndBad As Single, EndGood As Single, EndAverage As Single&lt;br&gt;
    Dim ShpBad As Shape, ShpGood As Shape, ShpAverage As Shape, ShpTarget As Shape, ShpMesure As Shape&lt;br&gt;
    Dim WidthCell As Single&lt;/p&gt;
&lt;p&gt;    Set rng = Application.Caller&lt;br&gt;
    ShapeDelete rng&lt;/p&gt;
&lt;p&gt;    With rng.Worksheet.Shapes&lt;br&gt;
           WidthCell = rng.MergeArea.Width&lt;br&gt;
           HBckgrnd = (rng.Height - (Margin * 2))&lt;br&gt;
           HMesure = (rng.Height * 0.5 - Margin * 2)&lt;br&gt;
           HTarget = (rng.Height * 0.9 - Margin * 2)&lt;br&gt;
           TopBkgrd = rng.Top + Margin&lt;br&gt;
           TopMesure = rng.Top + Margin + rng.Height * 0.25&lt;br&gt;
           TopTarget = rng.Top + Margin + rng.Height * 0.05&lt;br&gt;
           StrtMesure = Margin + rng.Left&lt;br&gt;
           StrtTarget = Margin + rng.Left + (WidthCell * (Target / Maxi))&lt;br&gt;
           StrtGood = StrtMesure&lt;br&gt;
           StrtAverage = Margin + rng.Left + (WidthCell * (Good / Maxi))&lt;br&gt;
           StrtBad = Margin + rng.Left + (WidthCell * (Bad / Maxi))&lt;br&gt;
           EndBad = rng.Left + WidthCell - (Margin) - StrtBad&lt;br&gt;
           EndGood = rng.Left + WidthCell - (Margin) - StrtGood&lt;br&gt;
           EndAverage = rng.Left + WidthCell - (Margin) - StrtAverage&lt;br&gt;
           EndMesure = Margin + rng.Left + (WidthCell * (Mesure / Maxi)) - StrtMesure&lt;br&gt;
           EndTarget = Margin + rng.Left + (WidthCell * (Target / Maxi)) + Thick - StrtTarget&lt;/p&gt;
&lt;p&gt;            ReDim arr(1 To 5)&lt;/p&gt;
&lt;p&gt;           Set ShpGood = .AddShape(msoShapeRectangle, StrtGood, TopBkgrd, EndGood, HBckgrnd)&lt;br&gt;
                ShpGood.Line.Visible = msoFalse&lt;br&gt;
                ShpGood.Fill.ForeColor.RGB = 11513775&lt;br&gt;
                arr(1) = ShpGood.Name&lt;/p&gt;
&lt;p&gt;           Set ShpBad = .AddShape(msoShapeRectangle, StrtBad, TopBkgrd, EndBad, HBckgrnd)&lt;br&gt;
                ShpBad.Line.Visible = msoFalse&lt;br&gt;
                ShpBad.Fill.ForeColor.RGB = 13158600&lt;br&gt;
                arr(2) = ShpBad.Name&lt;/p&gt;
&lt;p&gt;           Set ShpAverage = .AddShape(msoShapeRectangle, StrtAverage, TopBkgrd, EndAverage, HBckgrnd)&lt;br&gt;
                ShpAverage.Line.Visible = msoFalse&lt;br&gt;
                ShpAverage.Fill.ForeColor.RGB = 15132390&lt;br&gt;
                 arr(3) = ShpAverage.Name&lt;/p&gt;
&lt;p&gt;           Set ShpMesure = .AddShape(msoShapeRectangle, StrtMesure, TopMesure, EndMesure, HMesure)&lt;br&gt;
                ShpMesure.Line.Visible = msoFalse&lt;br&gt;
                ShpMesure.Fill.ForeColor.RGB = 0&lt;br&gt;
                 arr(4) = ShpMesure.Name&lt;/p&gt;
&lt;p&gt;           Set ShpTarget = .AddShape(msoShapeRectangle, StrtTarget, TopTarget, EndTarget, HTarget)&lt;br&gt;
                ShpTarget.Line.Visible = msoFalse&lt;br&gt;
                ShpTarget.Fill.ForeColor.RGB = 203&lt;br&gt;
                arr(5) = ShpTarget.Name&lt;/p&gt;
&lt;p&gt;rng.Worksheet.Shapes.Range(arr).Group&lt;/p&gt;
&lt;p&gt;        End With&lt;/p&gt;
&lt;p&gt;BulletChart = &quot;&quot;&lt;br&gt;
End Function&lt;/p&gt;
&lt;p&gt;Sub ShapeDelete(rngSelect As Range)&lt;br&gt;
    Dim rng As Range, shp As Shape, blnDelete As Boolean&lt;/p&gt;
&lt;p&gt;    For Each shp In rngSelect.Worksheet.Shapes&lt;br&gt;
        blnDelete = False&lt;br&gt;
        Set rng = Intersect(Range(shp.TopLeftCell, shp.BottomRightCell), rngSelect)&lt;br&gt;
        If Not rng Is Nothing Then&lt;br&gt;
            If rng.Address = Range(shp.TopLeftCell, shp.BottomRightCell).Address Then blnDelete = True&lt;br&gt;
        End If&lt;/p&gt;
&lt;p&gt;        If blnDelete Then shp.Delete&lt;br&gt;
    Next&lt;br&gt;
End Sub&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Bonjour, </p>
<p>here is a modest contribution to this post that helped me so much.<br />
another tool on the &#8220;in cell&#8221; chartind UDF subject, the bullet chart as explained here : <a href="http://www.exceluser.com/explore/bullet.htm" rel="nofollow">http://www.exceluser.com/explore/bullet.htm</a></p>
<p>Thanks to all contributors&#8230;</p>
<p>Function BulletChart(Mesure As Double, Target As Double, Maxi As Double, Optional Good As Double, Optional Bad As Double) As String<br />
    Const Margin = 2<br />
    Const Thick = 1.5<br />
    Dim rng As Range<br />
    Dim arr() As Variant<br />
    Dim sng As Single, RapTM As Single<br />
    Dim HBckgrnd As Single, HMesure As Single, HTarget As Single<br />
    Dim TopBkgrd As Single, TopMesure As Single, TopTarget As Single<br />
    Dim StrtMesure As Single, StrtTarget As Single, StrtGood As Single, StrtAverage As Single, StrtBad As Single<br />
    Dim EndBckgrd As Single, EndMesure As Single, EndTarget As Single, EndBad As Single, EndGood As Single, EndAverage As Single<br />
    Dim ShpBad As Shape, ShpGood As Shape, ShpAverage As Shape, ShpTarget As Shape, ShpMesure As Shape<br />
    Dim WidthCell As Single</p>
<p>    Set rng = Application.Caller<br />
    ShapeDelete rng</p>
<p>    With rng.Worksheet.Shapes<br />
           WidthCell = rng.MergeArea.Width<br />
           HBckgrnd = (rng.Height &#8211; (Margin * 2))<br />
           HMesure = (rng.Height * 0.5 &#8211; Margin * 2)<br />
           HTarget = (rng.Height * 0.9 &#8211; Margin * 2)<br />
           TopBkgrd = rng.Top + Margin<br />
           TopMesure = rng.Top + Margin + rng.Height * 0.25<br />
           TopTarget = rng.Top + Margin + rng.Height * 0.05<br />
           StrtMesure = Margin + rng.Left<br />
           StrtTarget = Margin + rng.Left + (WidthCell * (Target / Maxi))<br />
           StrtGood = StrtMesure<br />
           StrtAverage = Margin + rng.Left + (WidthCell * (Good / Maxi))<br />
           StrtBad = Margin + rng.Left + (WidthCell * (Bad / Maxi))<br />
           EndBad = rng.Left + WidthCell &#8211; (Margin) &#8211; StrtBad<br />
           EndGood = rng.Left + WidthCell &#8211; (Margin) &#8211; StrtGood<br />
           EndAverage = rng.Left + WidthCell &#8211; (Margin) &#8211; StrtAverage<br />
           EndMesure = Margin + rng.Left + (WidthCell * (Mesure / Maxi)) &#8211; StrtMesure<br />
           EndTarget = Margin + rng.Left + (WidthCell * (Target / Maxi)) + Thick &#8211; StrtTarget</p>
<p>            ReDim arr(1 To 5)</p>
<p>           Set ShpGood = .AddShape(msoShapeRectangle, StrtGood, TopBkgrd, EndGood, HBckgrnd)<br />
                ShpGood.Line.Visible = msoFalse<br />
                ShpGood.Fill.ForeColor.RGB = 11513775<br />
                arr(1) = ShpGood.Name</p>
<p>           Set ShpBad = .AddShape(msoShapeRectangle, StrtBad, TopBkgrd, EndBad, HBckgrnd)<br />
                ShpBad.Line.Visible = msoFalse<br />
                ShpBad.Fill.ForeColor.RGB = 13158600<br />
                arr(2) = ShpBad.Name</p>
<p>           Set ShpAverage = .AddShape(msoShapeRectangle, StrtAverage, TopBkgrd, EndAverage, HBckgrnd)<br />
                ShpAverage.Line.Visible = msoFalse<br />
                ShpAverage.Fill.ForeColor.RGB = 15132390<br />
                 arr(3) = ShpAverage.Name</p>
<p>           Set ShpMesure = .AddShape(msoShapeRectangle, StrtMesure, TopMesure, EndMesure, HMesure)<br />
                ShpMesure.Line.Visible = msoFalse<br />
                ShpMesure.Fill.ForeColor.RGB = 0<br />
                 arr(4) = ShpMesure.Name</p>
<p>           Set ShpTarget = .AddShape(msoShapeRectangle, StrtTarget, TopTarget, EndTarget, HTarget)<br />
                ShpTarget.Line.Visible = msoFalse<br />
                ShpTarget.Fill.ForeColor.RGB = 203<br />
                arr(5) = ShpTarget.Name</p>
<p>rng.Worksheet.Shapes.Range(arr).Group</p>
<p>        End With</p>
<p>BulletChart = &#8220;&#8221;<br />
End Function</p>
<p>Sub ShapeDelete(rngSelect As Range)<br />
    Dim rng As Range, shp As Shape, blnDelete As Boolean</p>
<p>    For Each shp In rngSelect.Worksheet.Shapes<br />
        blnDelete = False<br />
        Set rng = Intersect(Range(shp.TopLeftCell, shp.BottomRightCell), rngSelect)<br />
        If Not rng Is Nothing Then<br />
            If rng.Address = Range(shp.TopLeftCell, shp.BottomRightCell).Address Then blnDelete = True<br />
        End If</p>
<p>        If blnDelete Then shp.Delete<br />
    Next<br />
End Sub</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fabrice Rimlinger</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/#comment-21620</link>
		<dc:creator>Fabrice Rimlinger</dc:creator>
		<pubDate>Sun, 26 Nov 2006 19:46:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1507#comment-21620</guid>
		<description>&lt;p&gt;Bonjour, &lt;/p&gt;
&lt;p&gt;here is a modest contribution to this post that helped me so much.&lt;br&gt;
another tool on the &quot;in cell&quot; chartind UDF subject, the bullet chart as explained here : &lt;a href=&quot;http://www.exceluser.com/explore/bullet.htm&quot; rel=&quot;nofollow&quot;&gt;http://www.exceluser.com/explore/bullet.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thaks to a&lt;/p&gt;
&lt;p&gt;Function BulletChart(Mesure As Double, Target As Double, Maxi As Double, Optional Good As Double, Optional Bad As Double) As String&lt;br&gt;
    Const Margin = 2&lt;br&gt;
    Const Thick = 1.5&lt;br&gt;
    Dim rng As Range&lt;br&gt;
    Dim arr() As Variant&lt;br&gt;
    Dim sng As Single, RapTM As Single&lt;br&gt;
    Dim HBckgrnd As Single, HMesure As Single, HTarget As Single&lt;br&gt;
    Dim TopBkgrd As Single, TopMesure As Single, TopTarget As Single&lt;br&gt;
    Dim StrtMesure As Single, StrtTarget As Single, StrtGood As Single, StrtAverage As Single, StrtBad As Single&lt;br&gt;
    Dim EndBckgrd As Single, EndMesure As Single, EndTarget As Single, EndBad As Single, EndGood As Single, EndAverage As Single&lt;br&gt;
    Dim ShpBad As Shape, ShpGood As Shape, ShpAverage As Shape, ShpTarget As Shape, ShpMesure As Shape&lt;br&gt;
    Dim WidthCell As Single&lt;/p&gt;
&lt;p&gt;    Set rng = Application.Caller&lt;br&gt;
    ShapeDelete rng&lt;/p&gt;
&lt;p&gt;    With rng.Worksheet.Shapes&lt;br&gt;
           WidthCell = rng.MergeArea.Width&lt;br&gt;
           HBckgrnd = (rng.Height - (Margin * 2))&lt;br&gt;
           HMesure = (rng.Height * 0.5 - Margin * 2)&lt;br&gt;
           HTarget = (rng.Height * 0.9 - Margin * 2)&lt;br&gt;
           TopBkgrd = rng.Top + Margin&lt;br&gt;
           TopMesure = rng.Top + Margin + rng.Height * 0.25&lt;br&gt;
           TopTarget = rng.Top + Margin + rng.Height * 0.05&lt;br&gt;
           StrtMesure = Margin + rng.Left&lt;br&gt;
           StrtTarget = Margin + rng.Left + (WidthCell * (Target / Maxi))&lt;br&gt;
           StrtGood = StrtMesure&lt;br&gt;
           StrtAverage = Margin + rng.Left + (WidthCell * (Good / Maxi))&lt;br&gt;
           StrtBad = Margin + rng.Left + (WidthCell * (Bad / Maxi))&lt;br&gt;
           EndBad = rng.Left + WidthCell - (Margin) - StrtBad&lt;br&gt;
           EndGood = rng.Left + WidthCell - (Margin) - StrtGood&lt;br&gt;
           EndAverage = rng.Left + WidthCell - (Margin) - StrtAverage&lt;br&gt;
           EndMesure = Margin + rng.Left + (WidthCell * (Mesure / Maxi)) - StrtMesure&lt;br&gt;
           EndTarget = Margin + rng.Left + (WidthCell * (Target / Maxi)) + Thick - StrtTarget&lt;/p&gt;
&lt;p&gt;            ReDim arr(1 To 5)&lt;/p&gt;
&lt;p&gt;           Set ShpGood = .AddShape(msoShapeRectangle, StrtGood, TopBkgrd, EndGood, HBckgrnd)&lt;br&gt;
                ShpGood.Line.Visible = msoFalse&lt;br&gt;
                ShpGood.Fill.ForeColor.RGB = 11513775&lt;br&gt;
                arr(1) = ShpGood.Name&lt;/p&gt;
&lt;p&gt;           Set ShpBad = .AddShape(msoShapeRectangle, StrtBad, TopBkgrd, EndBad, HBckgrnd)&lt;br&gt;
                ShpBad.Line.Visible = msoFalse&lt;br&gt;
                ShpBad.Fill.ForeColor.RGB = 13158600&lt;br&gt;
                arr(2) = ShpBad.Name&lt;/p&gt;
&lt;p&gt;           Set ShpAverage = .AddShape(msoShapeRectangle, StrtAverage, TopBkgrd, EndAverage, HBckgrnd)&lt;br&gt;
                ShpAverage.Line.Visible = msoFalse&lt;br&gt;
                ShpAverage.Fill.ForeColor.RGB = 15132390&lt;br&gt;
                 arr(3) = ShpAverage.Name&lt;/p&gt;
&lt;p&gt;           Set ShpMesure = .AddShape(msoShapeRectangle, StrtMesure, TopMesure, EndMesure, HMesure)&lt;br&gt;
                ShpMesure.Line.Visible = msoFalse&lt;br&gt;
                ShpMesure.Fill.ForeColor.RGB = 0&lt;br&gt;
                 arr(4) = ShpMesure.Name&lt;/p&gt;
&lt;p&gt;           Set ShpTarget = .AddShape(msoShapeRectangle, StrtTarget, TopTarget, EndTarget, HTarget)&lt;br&gt;
                ShpTarget.Line.Visible = msoFalse&lt;br&gt;
                ShpTarget.Fill.ForeColor.RGB = 203&lt;br&gt;
                arr(5) = ShpTarget.Name&lt;/p&gt;
&lt;p&gt;rng.Worksheet.Shapes.Range(arr).Group&lt;/p&gt;
&lt;p&gt;        End With&lt;/p&gt;
&lt;p&gt;BulletChart = &quot;&quot;&lt;br&gt;
End Function&lt;/p&gt;
&lt;p&gt;Sub ShapeDelete(rngSelect As Range)&lt;br&gt;
    Dim rng As Range, shp As Shape, blnDelete As Boolean&lt;/p&gt;
&lt;p&gt;    For Each shp In rngSelect.Worksheet.Shapes&lt;br&gt;
        blnDelete = False&lt;br&gt;
        Set rng = Intersect(Range(shp.TopLeftCell, shp.BottomRightCell), rngSelect)&lt;br&gt;
        If Not rng Is Nothing Then&lt;br&gt;
            If rng.Address = Range(shp.TopLeftCell, shp.BottomRightCell).Address Then blnDelete = True&lt;br&gt;
        End If&lt;/p&gt;
&lt;p&gt;        If blnDelete Then shp.Delete&lt;br&gt;
    Next&lt;br&gt;
End Sub&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Bonjour, </p>
<p>here is a modest contribution to this post that helped me so much.<br />
another tool on the &#8220;in cell&#8221; chartind UDF subject, the bullet chart as explained here : <a href="http://www.exceluser.com/explore/bullet.htm" rel="nofollow">http://www.exceluser.com/explore/bullet.htm</a></p>
<p>Thaks to a</p>
<p>Function BulletChart(Mesure As Double, Target As Double, Maxi As Double, Optional Good As Double, Optional Bad As Double) As String<br />
    Const Margin = 2<br />
    Const Thick = 1.5<br />
    Dim rng As Range<br />
    Dim arr() As Variant<br />
    Dim sng As Single, RapTM As Single<br />
    Dim HBckgrnd As Single, HMesure As Single, HTarget As Single<br />
    Dim TopBkgrd As Single, TopMesure As Single, TopTarget As Single<br />
    Dim StrtMesure As Single, StrtTarget As Single, StrtGood As Single, StrtAverage As Single, StrtBad As Single<br />
    Dim EndBckgrd As Single, EndMesure As Single, EndTarget As Single, EndBad As Single, EndGood As Single, EndAverage As Single<br />
    Dim ShpBad As Shape, ShpGood As Shape, ShpAverage As Shape, ShpTarget As Shape, ShpMesure As Shape<br />
    Dim WidthCell As Single</p>
<p>    Set rng = Application.Caller<br />
    ShapeDelete rng</p>
<p>    With rng.Worksheet.Shapes<br />
           WidthCell = rng.MergeArea.Width<br />
           HBckgrnd = (rng.Height &#8211; (Margin * 2))<br />
           HMesure = (rng.Height * 0.5 &#8211; Margin * 2)<br />
           HTarget = (rng.Height * 0.9 &#8211; Margin * 2)<br />
           TopBkgrd = rng.Top + Margin<br />
           TopMesure = rng.Top + Margin + rng.Height * 0.25<br />
           TopTarget = rng.Top + Margin + rng.Height * 0.05<br />
           StrtMesure = Margin + rng.Left<br />
           StrtTarget = Margin + rng.Left + (WidthCell * (Target / Maxi))<br />
           StrtGood = StrtMesure<br />
           StrtAverage = Margin + rng.Left + (WidthCell * (Good / Maxi))<br />
           StrtBad = Margin + rng.Left + (WidthCell * (Bad / Maxi))<br />
           EndBad = rng.Left + WidthCell &#8211; (Margin) &#8211; StrtBad<br />
           EndGood = rng.Left + WidthCell &#8211; (Margin) &#8211; StrtGood<br />
           EndAverage = rng.Left + WidthCell &#8211; (Margin) &#8211; StrtAverage<br />
           EndMesure = Margin + rng.Left + (WidthCell * (Mesure / Maxi)) &#8211; StrtMesure<br />
           EndTarget = Margin + rng.Left + (WidthCell * (Target / Maxi)) + Thick &#8211; StrtTarget</p>
<p>            ReDim arr(1 To 5)</p>
<p>           Set ShpGood = .AddShape(msoShapeRectangle, StrtGood, TopBkgrd, EndGood, HBckgrnd)<br />
                ShpGood.Line.Visible = msoFalse<br />
                ShpGood.Fill.ForeColor.RGB = 11513775<br />
                arr(1) = ShpGood.Name</p>
<p>           Set ShpBad = .AddShape(msoShapeRectangle, StrtBad, TopBkgrd, EndBad, HBckgrnd)<br />
                ShpBad.Line.Visible = msoFalse<br />
                ShpBad.Fill.ForeColor.RGB = 13158600<br />
                arr(2) = ShpBad.Name</p>
<p>           Set ShpAverage = .AddShape(msoShapeRectangle, StrtAverage, TopBkgrd, EndAverage, HBckgrnd)<br />
                ShpAverage.Line.Visible = msoFalse<br />
                ShpAverage.Fill.ForeColor.RGB = 15132390<br />
                 arr(3) = ShpAverage.Name</p>
<p>           Set ShpMesure = .AddShape(msoShapeRectangle, StrtMesure, TopMesure, EndMesure, HMesure)<br />
                ShpMesure.Line.Visible = msoFalse<br />
                ShpMesure.Fill.ForeColor.RGB = 0<br />
                 arr(4) = ShpMesure.Name</p>
<p>           Set ShpTarget = .AddShape(msoShapeRectangle, StrtTarget, TopTarget, EndTarget, HTarget)<br />
                ShpTarget.Line.Visible = msoFalse<br />
                ShpTarget.Fill.ForeColor.RGB = 203<br />
                arr(5) = ShpTarget.Name</p>
<p>rng.Worksheet.Shapes.Range(arr).Group</p>
<p>        End With</p>
<p>BulletChart = &#8220;&#8221;<br />
End Function</p>
<p>Sub ShapeDelete(rngSelect As Range)<br />
    Dim rng As Range, shp As Shape, blnDelete As Boolean</p>
<p>    For Each shp In rngSelect.Worksheet.Shapes<br />
        blnDelete = False<br />
        Set rng = Intersect(Range(shp.TopLeftCell, shp.BottomRightCell), rngSelect)<br />
        If Not rng Is Nothing Then<br />
            If rng.Address = Range(shp.TopLeftCell, shp.BottomRightCell).Address Then blnDelete = True<br />
        End If</p>
<p>        If blnDelete Then shp.Delete<br />
    Next<br />
End Sub</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jon Peltier</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/#comment-20953</link>
		<dc:creator>Jon Peltier</dc:creator>
		<pubDate>Sun, 17 Sep 2006 13:46:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1507#comment-20953</guid>
		<description>&lt;p&gt;Hmmm, didn&#039;t try that. Not moving the shapes, I doubt that&#039;s the issue. I think Excel just needs the short break that moving the shapes provides. I&#039;ll try using DoEvents, probably after each shape is made and after each is deleted.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hmmm, didn&#8217;t try that. Not moving the shapes, I doubt that&#8217;s the issue. I think Excel just needs the short break that moving the shapes provides. I&#8217;ll try using DoEvents, probably after each shape is made and after each is deleted.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Fitting</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/#comment-20950</link>
		<dc:creator>Kevin Fitting</dc:creator>
		<pubDate>Sat, 16 Sep 2006 23:03:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1507#comment-20950</guid>
		<description>&lt;p&gt;Don&#039;t know if this will help the excel crashing, but before you delete a shape, move it to with in the cell border.  I&#039;ve been working on putting labels at specific points along the line.  If those labels protrude into adjacent cells, excel crashes when it tries to delete them (not while stepping through though... annoying!).  Solution was to move each label to the left top edge of the cell, then delete.  I&#039;ll probably shrink it&#039;s width to handle small cells, but it seems to work.  I wonder if this were applied to the line itself Excel wouldn&#039;t crash.  I don&#039;t know.&lt;/p&gt;
&lt;p&gt;Kevin&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Don&#8217;t know if this will help the excel crashing, but before you delete a shape, move it to with in the cell border.  I&#8217;ve been working on putting labels at specific points along the line.  If those labels protrude into adjacent cells, excel crashes when it tries to delete them (not while stepping through though&#8230; annoying!).  Solution was to move each label to the left top edge of the cell, then delete.  I&#8217;ll probably shrink it&#8217;s width to handle small cells, but it seems to work.  I wonder if this were applied to the line itself Excel wouldn&#8217;t crash.  I don&#8217;t know.</p>
<p>Kevin</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Fitting</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/09/13/scaled-in-cell-charting/#comment-20949</link>
		<dc:creator>Kevin Fitting</dc:creator>
		<pubDate>Sat, 16 Sep 2006 18:42:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1507#comment-20949</guid>
		<description>&lt;p&gt;Got it.  Change the lines for width and height to this:&lt;br&gt;
   dEffWidth = rCaller.MergeArea.Width - (lMARGIN * 2)&lt;br&gt;
   dEffHeight = rCaller.MergeArea.Height - (lMARGIN * 2)&lt;/p&gt;
&lt;p&gt;Now it will put the line across a merged cell.  Next, I&#039;m going to try to get it to draw a vertical line for vertical data.  Shouldn&#039;t be too hard... (famous last words!)&lt;/p&gt;
&lt;p&gt;Kevin&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Got it.  Change the lines for width and height to this:<br />
   dEffWidth = rCaller.MergeArea.Width &#8211; (lMARGIN * 2)<br />
   dEffHeight = rCaller.MergeArea.Height &#8211; (lMARGIN * 2)</p>
<p>Now it will put the line across a merged cell.  Next, I&#8217;m going to try to get it to draw a vertical line for vertical data.  Shouldn&#8217;t be too hard&#8230; (famous last words!)</p>
<p>Kevin</p>
]]></content:encoded>
	</item>
</channel>
</rss>

