<?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: Log Worksheet Changes</title>
	<atom:link href="http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/</link>
	<description>Daily posts of Excel tips…and other stuff</description>
	<lastBuildDate>Thu, 09 Feb 2012 23:42:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: seema</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/#comment-21545</link>
		<dc:creator>seema</dc:creator>
		<pubDate>Mon, 13 Nov 2006 07:34:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1372#comment-21545</guid>
		<description>&lt;p&gt;Please let me know how did you eliminate close option in excel sheet title bar.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br&gt;
Seema&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Please let me know how did you eliminate close option in excel sheet title bar.</p>
<p>Thanks<br />
Seema</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Seema garg</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/#comment-21544</link>
		<dc:creator>Seema garg</dc:creator>
		<pubDate>Mon, 13 Nov 2006 07:30:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1372#comment-21544</guid>
		<description>&lt;p&gt;Please explain how did you disable the cancel option in title bar of the excel sheet.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br&gt;
Seema&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Please explain how did you disable the cancel option in title bar of the excel sheet.</p>
<p>Thanks<br />
Seema</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kobus</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/#comment-19612</link>
		<dc:creator>Kobus</dc:creator>
		<pubDate>Fri, 05 May 2006 15:07:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1372#comment-19612</guid>
		<description>&lt;p&gt;Same question as Scott,&lt;/p&gt;
&lt;p&gt;I&#039;m struggling&lt;/p&gt;
&lt;p&gt;Please HELP, I need a solution like this urgently&lt;/p&gt;
&lt;p&gt;THANX Kobus&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Same question as Scott,</p>
<p>I&#8217;m struggling</p>
<p>Please HELP, I need a solution like this urgently</p>
<p>THANX Kobus</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/#comment-19368</link>
		<dc:creator>Scott</dc:creator>
		<pubDate>Mon, 03 Apr 2006 14:33:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1372#comment-19368</guid>
		<description>&lt;p&gt;Hi Dick,&lt;/p&gt;
&lt;p&gt;How do I call you&#039;re code.&lt;/p&gt;
&lt;p&gt;I have tried to call &quot;LogStandardChanges&quot; from the excel AutoOpen macro, with no luck&lt;/p&gt;
&lt;p&gt;...Scott...&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi Dick,</p>
<p>How do I call you&#8217;re code.</p>
<p>I have tried to call &#8220;LogStandardChanges&#8221; from the excel AutoOpen macro, with no luck</p>
<p>&#8230;Scott&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dick Kusleika</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/#comment-19222</link>
		<dc:creator>Dick Kusleika</dc:creator>
		<pubDate>Sun, 19 Mar 2006 02:47:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1372#comment-19222</guid>
		<description>&lt;p&gt;Good one Dave.  Thanks.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Good one Dave.  Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/#comment-19221</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Sat, 18 Mar 2006 21:09:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1372#comment-19221</guid>
		<description>&lt;p&gt;Just a word of warning...&lt;/p&gt;
&lt;p&gt;    lMaxRow = Application.WorksheetFunction.Max(wbNewStan.Sheets(1).UsedRange.Rows.Count, _&lt;br&gt;
        wbOldStan.Sheets(1).UsedRange.Rows.Count)&lt;br&gt;
    lMaxCol = Application.WorksheetFunction.Max(wbNewStan.Sheets(1).UsedRange.Columns.Count, _&lt;br&gt;
        wbOldStan.Sheets(1).UsedRange.Columns.Count)&lt;/p&gt;
&lt;p&gt;May give the incorrect results if the used range does not include A1.  (Well, sometimes it could happen .)&lt;/p&gt;
&lt;p&gt;    Dim wbNewStan As Workbook&lt;br&gt;
    Dim wbOldStan As Workbook&lt;/p&gt;
&lt;p&gt;    Dim LastRow1 As Long&lt;br&gt;
    Dim LastRow2 As Long&lt;br&gt;
    Dim LastCol1 As Long&lt;br&gt;
    Dim LastCol2 As Long&lt;br&gt;
    Dim LastRow As Long&lt;br&gt;
    Dim LastCol As Long&lt;/p&gt;
&lt;p&gt;    &#039;some nice assignments&lt;/p&gt;
&lt;p&gt;    With wbNewStan.Worksheets(1).UsedRange&lt;br&gt;
        LastCol1 = .Columns(.Columns.Count).Column&lt;br&gt;
        LastRow1 = .Rows(.Rows.Count).Row&lt;br&gt;
    End With&lt;/p&gt;
&lt;p&gt;    With wbOldStan.Worksheets(1).UsedRange&lt;br&gt;
        LastCol2 = .Columns(.Columns.Count).Column&lt;br&gt;
        LastRow2 = .Rows(.Rows.Count).Row&lt;br&gt;
    End With&lt;/p&gt;
&lt;p&gt;    With Application&lt;br&gt;
        LastRow = .Max(LastRow1, LastRow2)&lt;br&gt;
        LastCol = .Max(LastCol1, LastCol2)&lt;br&gt;
    End With&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Just a word of warning&#8230;</p>
<p>    lMaxRow = Application.WorksheetFunction.Max(wbNewStan.Sheets(1).UsedRange.Rows.Count, _<br />
        wbOldStan.Sheets(1).UsedRange.Rows.Count)<br />
    lMaxCol = Application.WorksheetFunction.Max(wbNewStan.Sheets(1).UsedRange.Columns.Count, _<br />
        wbOldStan.Sheets(1).UsedRange.Columns.Count)</p>
<p>May give the incorrect results if the used range does not include A1.  (Well, sometimes it could happen .)</p>
<p>    Dim wbNewStan As Workbook<br />
    Dim wbOldStan As Workbook</p>
<p>    Dim LastRow1 As Long<br />
    Dim LastRow2 As Long<br />
    Dim LastCol1 As Long<br />
    Dim LastCol2 As Long<br />
    Dim LastRow As Long<br />
    Dim LastCol As Long</p>
<p>    &#8216;some nice assignments</p>
<p>    With wbNewStan.Worksheets(1).UsedRange<br />
        LastCol1 = .Columns(.Columns.Count).Column<br />
        LastRow1 = .Rows(.Rows.Count).Row<br />
    End With</p>
<p>    With wbOldStan.Worksheets(1).UsedRange<br />
        LastCol2 = .Columns(.Columns.Count).Column<br />
        LastRow2 = .Rows(.Rows.Count).Row<br />
    End With</p>
<p>    With Application<br />
        LastRow = .Max(LastRow1, LastRow2)<br />
        LastCol = .Max(LastCol1, LastCol2)<br />
    End With</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ekanna</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/#comment-19220</link>
		<dc:creator>ekanna</dc:creator>
		<pubDate>Sat, 18 Mar 2006 15:41:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1372#comment-19220</guid>
		<description>&lt;p&gt;I like your site so much....&lt;br&gt;
you are really genius..&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I like your site so much&#8230;.<br />
you are really genius..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger Crawley</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/#comment-19203</link>
		<dc:creator>Roger Crawley</dc:creator>
		<pubDate>Fri, 17 Mar 2006 13:44:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1372#comment-19203</guid>
		<description>&lt;p&gt;I put in place a monitoring process on a worksheet which only allowed users to modify cell values:&lt;/p&gt;
&lt;p&gt;1. Create a very hidden copy of the worksheet&lt;br&gt;
2. For all cell&#039;s to be monitored, add conditional formatting comparing its value with the value in the equivalent cell of the control worskheet.&lt;/p&gt;
&lt;p&gt;I find this works well as it only highlights values that differ from the original file, even if the value is changed many times.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I put in place a monitoring process on a worksheet which only allowed users to modify cell values:</p>
<p>1. Create a very hidden copy of the worksheet<br />
2. For all cell&#8217;s to be monitored, add conditional formatting comparing its value with the value in the equivalent cell of the control worskheet.</p>
<p>I find this works well as it only highlights values that differ from the original file, even if the value is changed many times.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: DM Unseen</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/#comment-19202</link>
		<dc:creator>DM Unseen</dc:creator>
		<pubDate>Fri, 17 Mar 2006 13:38:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1372#comment-19202</guid>
		<description>&lt;p&gt;I&#039;ve bin through this idea (on an idea to save a full spreadsheet to a SQL database).&lt;/p&gt;
&lt;p&gt;There are some optimisations you could make:&lt;/p&gt;
&lt;p&gt;You only need to check on unprotected cells. Proteced cells won&#039;t change(if sheets are proteced of course). Make shure you make named ranges of them. this way you can check selectively, and you are not dependent on actual cell addresses. You need to do this for all unprotected cells. Walking through all named ranges that are not protected will certainly be faster.&lt;/p&gt;
&lt;p&gt;You also need to discern between &quot;tables&quot; and fixed ranges. &quot;Table&quot; ranges are difficult because their cell amounts can grow and shrink. You&#039;ll need to understand if they do this horizontally or vertically. You also need to understand if your table is postionally linked to other ranges/tables (with cell references), or linked through cell values (with lookups). The last situation means you have a key column(s) to match records with an older version of your table. In fact you are now creating more or less a multi value version database inside excel (like e.g. ORACLE has). To make this not too hard either save the whole table with each change, or maintain the table in a SQL database, and make it multiversion in there. Link to it in Excel and use that.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I&#8217;ve bin through this idea (on an idea to save a full spreadsheet to a SQL database).</p>
<p>There are some optimisations you could make:</p>
<p>You only need to check on unprotected cells. Proteced cells won&#8217;t change(if sheets are proteced of course). Make shure you make named ranges of them. this way you can check selectively, and you are not dependent on actual cell addresses. You need to do this for all unprotected cells. Walking through all named ranges that are not protected will certainly be faster.</p>
<p>You also need to discern between &#8220;tables&#8221; and fixed ranges. &#8220;Table&#8221; ranges are difficult because their cell amounts can grow and shrink. You&#8217;ll need to understand if they do this horizontally or vertically. You also need to understand if your table is postionally linked to other ranges/tables (with cell references), or linked through cell values (with lookups). The last situation means you have a key column(s) to match records with an older version of your table. In fact you are now creating more or less a multi value version database inside excel (like e.g. ORACLE has). To make this not too hard either save the whole table with each change, or maintain the table in a SQL database, and make it multiversion in there. Link to it in Excel and use that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xcelion</title>
		<link>http://www.dailydoseofexcel.com/archives/2006/03/16/log-worksheet-changes/#comment-19201</link>
		<dc:creator>Xcelion</dc:creator>
		<pubDate>Fri, 17 Mar 2006 09:08:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dailydoseofexcel.com/?p=1372#comment-19201</guid>
		<description>&lt;p&gt;Hi Dick,&lt;br&gt;
I&#039;m not sure whether I am correct. I had faced a same situation where I want to catch the real close event of work book. After trying many methods what I found as reliable method was hooking WM_DESTROY message for the workbook window. I had faced this situation when I was doing an add-in for catching excel events. Greg&#039;s solution of combining the Deactivate event with the Before close event is excellent&lt;/p&gt;
&lt;p&gt;Thanks&lt;br&gt;
Xcelion&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi Dick,<br />
I&#8217;m not sure whether I am correct. I had faced a same situation where I want to catch the real close event of work book. After trying many methods what I found as reliable method was hooking WM_DESTROY message for the workbook window. I had faced this situation when I was doing an add-in for catching excel events. Greg&#8217;s solution of combining the Deactivate event with the Before close event is excellent</p>
<p>Thanks<br />
Xcelion</p>
]]></content:encoded>
	</item>
</channel>
</rss>

