<feed version="0.3" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://purl.org/atom/ns#" xml:lang="en-US"><title>Sven's Blog</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/default.aspx" /><tagline type="text/html">MemoryStream ms = new MemoryStream(MyBrain);
// Management and technology considerations</tagline><id>http://www.adduxis.com/blogs/blogs/sven/default.aspx</id><author><url>http://www.adduxis.com/blogs/blogs/sven/default.aspx</url></author><generator url="http://communityserver.org" version="1.0.0.50218">Community Server</generator><modified>2005-06-30T08:12:00Z</modified><entry><title>Atlanta Code Camp 2007 Session</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2007/01/24/23.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:23</id><created>2007-01-24T13:37:00Z</created><content type="text/html" mode="escaped">The Atlanta Code Camp 2007 (http://www.atlantacodecamp.com) was another successful CodeCamp event.&lt;br /&gt;&lt;br /&gt;
I presented a session on creating a custom extender with ASP.NET AJAX RC. If you were present in Montgomery, you'll find the download from the Atlanta Code Camp useful, as it has been revised for RC (I used Beta 2 during the Montgomery CodeCamp).&lt;br /&gt;&lt;br /&gt;
The download (zip file containing demo script and code) is available &lt;a href="http://www.adduxis.com/Downloads/AtlantaCodeCamp2007/CustomExtender.zip"&gt;here&lt;/a&gt;.&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=23" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=23</wfw:commentRss></entry><entry><title>Alabama Code Camp 3 Experience</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2006/10/29/22.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:22</id><created>2006-10-29T07:20:00Z</created><content type="text/html" mode="escaped">Yesterday's third Alabama Code Camp was a good experience for me. Contrary to my post on 9/12, I did not do a talk on Windows Communication Foundation, but added a session on creating an Extender with ASP.NET AJAX ("Atlas"). 

&lt;br&gt;&lt;br&gt;The evening before the event, I was asked to take over a session for Joe Healy, who had a family emergency. His talk was an introduction to ASP.NET AJAX and fit right in with mine. I had to scramble to prepare for that talk, but managed to do it just in time for the session's start.

&lt;br&gt;&lt;br&gt;P.S.: To those who attended my sessions, thank you for the feedback
and the response. I enjoyed the questions and interaction. The slides,
code and demo scripts will be posted later today.&lt;br&gt;&lt;br&gt;&lt;span&gt;Upcoming Code Camps&lt;/span&gt;&lt;br&gt;Next spring, there is a Code Camp in the works for Mobile. I will likely make plans to attend and present some sessions there too.

&lt;br&gt;A code camp is scheduled in Atlanta on January 20th. I have not yet made a decision about attending.

&lt;br&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=22" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=22</wfw:commentRss></entry><entry><title>Alabama Code Camp No. 3: October 28, 2006</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2006/09/12/21.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:21</id><created>2006-09-12T18:50:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;The &lt;A href="http://www.alabamacodecamp.com"&gt;Alabama Code Camp&lt;/A&gt; is having its third edition on Saturday, October 28th in Montgomery (&lt;A href="http://www.aum.edu"&gt;Auburn University at Montgomery&lt;/A&gt;). I missed the second edition, because Huntsville is quite a while away from Troy. However, Montgomery is probably as close as it will come, so I will be there.&lt;/P&gt;
&lt;P&gt;I have submitted a proposal for a talk on unit testing with &lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/"&gt;Visual Studio Team System&lt;/A&gt;, and I am considering an updated talk about web services with Windows Communication Foundation (WCF) and a new talk about Windows Workflow Foundation (if I get around to developing some demos for it).&lt;/P&gt;
&lt;P&gt;I truly enjoyed the talks I attended at the first Code Camp. The content was interesting, at the right level, and presented well. I encourage every developer in the area to attend. There are already a number of sessions scheduled, but I believe there will be many more to come.&lt;/P&gt;
&lt;P&gt;See you in Montgomery!&lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=21" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=21</wfw:commentRss></entry><entry><title>Visual Studio Orcas: What is Microsoft Planning?</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2006/08/28/20.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:20</id><created>2006-08-28T07:24:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;The title of this post might actually be more appropriate if it was called what aren't they planning. If you've been reading my blog, you'll know that I was an active beta tester during the Visual Studio 2005 beta period. Microsoft sent me (and many others) a Customer Appreciation Award. Nice token, thanks for that.&lt;/P&gt;
&lt;P&gt;However, after the release of VS 2005, I still found some annoyances. I posted&amp;nbsp;two feedback items at the Microsoft Connect site ([1] and [2])&amp;nbsp;on November 21. Only now have I gotten feedback on those items' status. I can understand that, the team had probably lots of other things on their mind, such as VS 2005 Beta 1.&lt;/P&gt;
&lt;P&gt;However, I am concerned about the reply that was posted for both topics. If you have a Microsoft Connect account, I encourage you to look at the items and judge for yourself; but, in my opinion, these are fairly minor changes. One would require adding a missing &lt;STRONG&gt;&lt;FONT face="Courier New"&gt;runat="server"&lt;/FONT&gt;&lt;/STRONG&gt; attribute to a tag when Local Resources are generated and another would involve automatically generating resource entries for columns in a GridView. The response I got to both items basically stated that these items won't be fixed for the Orcas timeframe because they would produce breaking changes and the goal for Orcas is to have "a high degree of backward compatibility" [3]. It turns out that the requests I submitted are in the "Red" bits (&lt;A href="http://blogs.msdn.com/somasegar/archive/2006/05/18/601354.aspx"&gt;read the blog&lt;/A&gt; post at [3]).&lt;/P&gt;
&lt;P&gt;I am concerned because first of all, I was hoping for a fix for these items in a Service Pack; and seeing as how "Orcas" is now supposed to be just a Service Pack where it concerns "Red" bits (again, see [3]), I was certainly hoping for a fix in that time frame. Now, it turns out that even such minor feature changes are not considered for Orcas. So, it seems to me that&lt;/P&gt;
&lt;P&gt;Orcas = VS 2005 + (WPF, WCF,&amp;nbsp;WWF designers)&lt;/P&gt;
&lt;P&gt;just like&lt;/P&gt;
&lt;P&gt;.NET 3.0 = .NET 2.0 + WPF + WCF + WWF&lt;/P&gt;
&lt;P&gt;When will that huge dev team at Microsoft get going on delivering high quality software on time on a reasonable schedule?&lt;/P&gt;
&lt;P&gt;Sven.&lt;/P&gt;
&lt;P&gt;P.S.: Those readers&amp;nbsp;who think I believe Microsoft is the next best thing since sliced bread... there you have it ;o)&lt;/P&gt;
&lt;P&gt;[1]: &lt;A href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=104600"&gt;http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=104600&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;[2]: &lt;A href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=104598"&gt;http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=104598&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;[3]: &lt;A href="http://blogs.msdn.com/somasegar/archive/2006/05/18/601354.aspx"&gt;http://blogs.msdn.com/somasegar/archive/2006/05/18/601354.aspx&lt;/A&gt; &lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=20" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=20</wfw:commentRss></entry><entry><title>Windows Vista Developer Training: WCF Lab 2 Update</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2006/07/28/19.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:19</id><created>2006-07-28T09:34:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;(Note: This is my first "live" blog post...) &lt;/P&gt;
&lt;P&gt;I am in Atlanta for Windows Vista Developer Training. I've had a chance to get used to the user experience (UX) in Windows Vista, and I like it. The developer side of Vista is exciting also, but is clearly still in the works. The lab exercises that are provided are those that were also used during the PDC. They have been updated to an extent. &lt;/P&gt;
&lt;P&gt;But on my machine, I installed the Vista July CTP build (build 5472) with its matching .NET Framework 3.0. The Windows Communication Foundation lab 2 went fairly well, but did require some changes to the code. I've uploaded my solution for lab 2 here [2]. Hopefully, this can be of use to someone who's trying the lab on a recent build. &lt;/P&gt;
&lt;P&gt;The main differences are here: The Session property of the OperationContractAttribute is now called SessionMode and has changed from a boolean value to an enum. The MSMQ exercise in the lab requires an additional configuration attribute in the tag, "exactlyOnly="false"". (Unless you enable transactional support first; but in the lab, this is done later) &lt;/P&gt;
&lt;P&gt;[2] &lt;a href="http://www.adduxis.com/downloads/WCF_HOL2/TradingService.zip"&gt;http://www.adduxis.com/downloads/WCF_HOL2/TradingService.zip&lt;/A&gt; &lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=19" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=19</wfw:commentRss></entry><entry><title>A Currency MaskedTextBox for .NET 2.0</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2006/06/21/18.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:18</id><created>2006-06-21T14:09:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;At a customer's site, an application needed to format and accept formatted input for currencies. They had already made several attempts at getting the .NET 2.0 WinForms MaskedTextBox to behave the way they wanted, without success.&lt;/P&gt;
&lt;P&gt;A quick search reveals that they were not the only ones struggling with this issue. However, Irena Kennedy [1]&amp;nbsp;had posted some sample code that would make the MaskedTextBox behave more appropriately. While the sample provides an excellent overview of how to handle currency values, two features were lacking:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Support for the currency group separator (the , in the US English culture)&lt;/LI&gt;
&lt;LI&gt;Support for different cultures (important, considering the fact that the default MaskedTextBox allows you to specify a culture)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The download below [2] is a zip file containing a sample implementation for both of the above features. The code is based on Irena's code. Feel free to download this sample and use it in your applications. However, I provide no warranty whatsoever that this CurrencyMaskedTextBox will suit your needs. If you make any modifications, please continue to include my name and Irena's name.&lt;/P&gt;
&lt;P&gt;[1]: &lt;A href="http://blogs.msdn.com/irenak/archive/2006/03/21/556434.aspx"&gt;http://blogs.msdn.com/irenak/archive/2006/03/21/556434.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;[2]: &lt;a href="http://www.adduxis.com/downloads/CurrencyMaskedTextBox/CurrencyMaskedTextBox01.zip"&gt;http://www.adduxis.com/downloads/CurrencyMaskedTextBox/CurrencyMaskedTextBox01.zip&lt;/A&gt; &lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=18" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=18</wfw:commentRss></entry><entry><title>Blog is still alive, although on life support</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2006/06/05/17.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:17</id><created>2006-06-05T12:47:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;I couldn't blame anyone for thinking that this blog is dead. However, it's not. I could come up with scores of excuses as to why I haven't posted anything, but that won't serve any valuable purpose.&lt;/P&gt;
&lt;P&gt;Rather, I'd like to write something about the subjects I can post about, namely&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;The betas of Windows Vista and Office 2007.&lt;BR&gt;&lt;/STRONG&gt;I've installed them both, and I am gradually learning the differences and the exciting new features. Many pundits always claim that upgrades such as these have very little to offer in terms of business value. While I believe that they often make good points, I also think that for true "Information Workers" (I don't like that term very much...), the differences between Office 95 and Office 2007 are certainly significant. I am using such a big timespan to illustrate that over an 11-year period, there are significant advances in software. If each individual upgrade didn't provide benefits, where did these combined advances come from?&lt;BR&gt;Office 2007's new user interface is radically different. My first experiences with it are positive. I've been used many of the advanced features of Outlook and Word (Excel somewhat less) for many years now. Naturally, I was apprehensive about this new interface. I was afraid that I wouldn't be able to find the commands I was looking for anymore. Good news on that front: everything is right where I would expect it to be. The first time using a command, it might take perhaps a second or two, but the new interface grows on me quickly. Whether or not novice users will now actually be able to find and use the advanced features more easily remains to be seen. I suspect that they might. 
&lt;LI&gt;&lt;STRONG&gt;Visual Studio 2005 and SQL Server 2005&lt;/STRONG&gt;&lt;BR&gt;They have been available for several months now, of course. If you've read my blog before, you'll know that I've been developing applications using Visual Studio 2005 for quite some time. Visual Studio is not without its problems (Service Pack, please...), but I believe that Microsoft is committed to fixing some of the problems they introduced (witness thereof the new Web Application Project and Web Deployment Project templates). 
&lt;LI&gt;&lt;STRONG&gt;Atlas&lt;/STRONG&gt;&lt;BR&gt;I don't buy into the Web 2.0 etc. hype. But, AJAX does offer benefits. I've been developing an application that requires a form to be completed in a number of steps; and within each step, the web server has to provide more data based on user selections. While regular ASP.NET can handle that just fine, refreshing&amp;nbsp;entire (complex!) web pages versus just a few of the elements on&amp;nbsp;them is very different. The user experience is enhanced significantly by allowing a page to be partially refreshed. Speed is one factor. I know the form inside out, and I can complete it in about 60 seconds with AJAX. It takes over 2 minutes if AJAX is not enabled. The difference: the web server response time.&lt;BR&gt;I don't recommend site designs that do not ever navigate to a new web page, because there are certainly many issues with that approach, including manageability and accessibility. 
&lt;LI&gt;&lt;STRONG&gt;VOIP&lt;/STRONG&gt;&lt;BR&gt;I recently switched to&amp;nbsp;Voice over IP at home and in the office.&amp;nbsp;I am impressed with the quality, the features and the price. However, using cable modem connections at both locations highlights one important point: Using QoS (Quality of Service) is absolutely necessary. Backups at the office are done over the Internet to a remote site, and these uploads take up most/all of the available uplink bandwidth. Having a phone conversation at the same time is impossible without bandwidth management.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I hope to be writing about these subjects more soon.&lt;/P&gt;
&lt;P&gt;Sven Aelterman.&lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=17" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=17</wfw:commentRss></entry><entry><title>Difference between NUnit and Visual Studio Team System unit testing framework</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2005/11/14/16.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:16</id><created>2005-11-14T14:46:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;While converting a project from VS.NET 2003 to Visual Studio 2005, I also converted the unit tests to the Visual Studio Team System unit testing framework. While I believe that the unit testing framework in VS 2005 has merits, I am not sure if I am ready to dump NUnit. NUnit has a major advantage over Visual Studio for the specific project I am working on: it can correctly compare the contents of arrays.&lt;/P&gt;
&lt;P&gt;Suppose you have a custom class. In order to properly compare two instances, you override the Equals method. Both NUnit and Visual Studio Team System will use the Equals method in their respective Assert.AreEqual methods.&lt;/P&gt;
&lt;P&gt;However, NUnit will compare arrays on an&amp;nbsp;element-by-element basis, calling the Equals method on each element in the array. Visual Studio Team System expects you to iterate over the array and call Assert.AreEqual for each element (which I would think is what NUnit does under the covers (I haven't actually looked at the source code, but it seems to make sense)). If you supply two arrays to Visual Studio's Assert.AreEqual, then the unit test framework will consider the arrays equal if they refer to the same memory address (reference equality).&lt;/P&gt;
&lt;P&gt;P.S.: There is one more difference that makes NUnit preferable in certain situations. NUnit introduces a concept of "Categories." Each unit test can be assigned to one or more categories. You can then elect to only run unit tests in a specific category, or exclude unit tests from a specific category. For a large project, or a project where you know under certain circumstances tests will fail, this is particularly attractive.&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;UPDATE&lt;/FONT&gt;: According to the documentation, the Team Edition for Testers (and therefore Team Suite) provides the notion of Test Lists, which allow logical groups of tests to be created. Sadly, this means developers have to pay extra for this functionality if they choose to use the Team System testing framework.&lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=16" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=16</wfw:commentRss></entry><entry><title>Conditional Build Events in Visual Studio 2005</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2005/11/01/15.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:15</id><created>2005-11-01T17:18:00Z</created><content type="text/html" mode="escaped">A customer asked me if it was possible to create a post-build event in Visual Studio 2005 that would only be run if the active mode was "Debug."
A brief search in the Internet (using A9.com, to keep getting "a piece of the Π") revealed that there was no "built-in" support or any solution previously posted. However, the solution is rather simple, almost trivial. Build events are just commands that get passed to the command line interpreter (with some escaping taking place). 
I remember that MS-DOS...(&lt;a href="http://www.adduxis.comhttp://www.adduxis.com/blogs/blogs/sven/archive/2005/11/01/15.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=15" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=15</wfw:commentRss></entry><entry><title>Hosting HTTP web services without IIS</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2005/10/30/14.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:14</id><created>2005-10-30T13:35:00Z</created><content type="text/html" mode="escaped">During my talk at the Alabama Code Camp, I demonstrated how you can host a soap web service in a WinForms application (or a Windows Service, etc.). However, my solution required the use of SOAP over TCP, which does make it less interoperable.
Angel Machin has a post that would allow any .NET application to host HTTP web services (using Web Services Enhancements). I have not tried this myself, but I got the link from William Stacey's blog.
William Stacey himself hasn't been idle either lately. He...(&lt;a href="http://www.adduxis.comhttp://www.adduxis.com/blogs/blogs/sven/archive/2005/10/30/14.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=14" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=14</wfw:commentRss></entry><entry><title>Alabama Code Camp: Great Event</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2005/10/30/13.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:13</id><created>2005-10-30T13:06:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;The &lt;A href="http://www.alabamacodecamp.com"&gt;Alabama Code Camp&lt;/A&gt; last Saturday was, from my perspective, a success. I thought that attendance was high and the quality of the sessions I attended good to very high. Thanks to the sponsors for enabling this (including a "free lunch").&lt;/P&gt;
&lt;P&gt;The only side of the event I liked less was the venue. Computer classrooms are not the best places to sit and watch demonstrations. Also, the building is a complete maze and there are no pointers whatsoever to help you find a particular room number.&lt;/P&gt;
&lt;P&gt;I believe people who came to my presentation were satisfied. Unfortunately, one hour was not nearly enough to show what I really wanted to show. My &lt;a href="http://www.adduxis.com/Downloads/CodeCamp2005/Slides.pdf"&gt;slides&lt;/A&gt; and the &lt;a href="http://www.adduxis.com/Downloads/CodeCamp2005/WSE2.zip"&gt;code for WSE 2.0&lt;/A&gt; have been posted. I am working on an issue with one of the demos in WSE 3.0, but expect those files to be posted soon. I need to mention that the idea for Demo 2 in my presentation was obtained from &lt;A href="http://spaces.msn.com/members/staceyw/blog/cns!1pnsZpX0fPvDxLKC6rAAhLsQ!273.entry?txtName=SA"&gt;William Stacey's blog&lt;/A&gt;.&lt;/P&gt;
&lt;H4&gt;Security Gaffe&lt;/H4&gt;
&lt;P&gt;One thing that is nearly as funny as &lt;A href="http://storage.msn.com/x1pmAkndzHuOfdE9TFALb22J0i_sfXl2qnHgzv0WKE8x-oStnlPDsSBJwhGU26lhf5Cbkup1JKSF5sdLkJn53Es3-Dd9ERaS4L8"&gt;this&lt;/A&gt;, is a poster I noticed at the Virginia College, Palisades II campus (where the Code Camp was held). The poster was meant to inform their students of the availability of a virtual library. As such, it was posted at the main entrance. Unfortunately, the poster included not only the URL to the virtual library, but also the password...&lt;/P&gt;
&lt;P&gt;I wonder why they even bother to have a password then?&amp;nbsp;(Note that I didn't actually try this out, and it's possible that the virtual library is only accessible through their student portal site, which probably requires a separate logon. Still, it makes no sense to have a secondary password then.)&lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=13" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=13</wfw:commentRss></entry><entry><title>An improved Microsoft Excel color banding solution</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2005/10/05/12.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:12</id><created>2005-10-05T13:36:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Today, someone asked me if it was possible to make Excel highlight the column and the row of the cell that is selected. Excel already highlights the column and row header, but when working on a high-resolution screen, that does not help much in ensuring that you are actually entering data in the right cell.&lt;/P&gt;
&lt;P&gt;I set out to find a solution, and on the Microsoft Office Assistance site, I found [1]. While this certainly works, it has a major drawback: any conditional formatting that is applied to &lt;STRONG&gt;any&lt;/STRONG&gt; cell in your worksheet is lost. The worksheet for which this solution was needed didn't actually have any conditional formatting, but I figured that that might change and users would probably never figure out why their conditional formatting was always lost.&lt;/P&gt;
&lt;P&gt;The problem with the solution at [1] is that it indiscriminately removes all conditional formatting in the worksheet. I figured that a better solution can be found if you merely keep track of the previously highlighted area. That way, you only need to undo the conditional formatting the macro applied, rather than all of it. In addition, the macro can be improved even further by only removing the conditional formatting that actually matches the conditional formatting it previously set. In other words, only delete the conditional formatting if the formula and the expression matches what the macro itself applies. &lt;/P&gt;
&lt;P&gt;That conditional formatting is very simple, by the way. It merely applies a background color (which is guaranteed to be different from any background color&amp;nbsp;the cell already has and from the font color in the cell) if the formula "TRUE" is True, which it always is, of course.&lt;/P&gt;
&lt;P&gt;An additional improvement I made is that the last "banding" is removed before the workbook is closed. That way, when you open the workbook next time, there are no oddly highlighted cells. If that would happen anyway, the solution is simple of course: just put the cursor cell that was selected before the workbook was saved and then move it away from that cell.&lt;/P&gt;
&lt;P&gt;Here's the VBA code that achieves this. Just copy and paste it in your workbook's &lt;STRONG&gt;ThisWorkbook&lt;/STRONG&gt; VBA code.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Option Explicit&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Private LastTarget As Range&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Private Sub Workbook_BeforeClose(Cancel As Boolean)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UndoBanding LastTarget&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal target As Range)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Undo last target band coloring&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UndoBanding LastTarget&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Save the current target as the last target&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set LastTarget = target&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Band color the current target&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoBanding target&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Private Sub UndoBanding(ByVal target As Range)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim c As Range&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim CurrentRow As Integer, CurrentColumn As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (Not target Is Nothing) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Undo in the actual target cell(s)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (target.Cells.Count = 1) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UnBandCell target&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UnBandCell target.Cells(1, 1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Un-highlight the same column's cells above&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CurrentRow = target.Cells(1, 1).Row&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CurrentColumn = target.Cells(1, 1).Column&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = CurrentRow - 1 To 1 Step -1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UnBandCell target.Worksheet.Cells(i, CurrentColumn)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next i&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Un-highlight the same row's cells to the left&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' TODO: How about other cultures? (R-t-L)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = CurrentColumn - 1 To 1 Step -1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UnBandCell target.Worksheet.Cells(CurrentRow, i)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next i&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Private Sub DoBanding(ByVal target As Range)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim HighlightColor As Variant&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim c As Range&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim CurrentRow As Integer, CurrentColumn As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (Not target Is Nothing) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HighlightColor = target.Interior.ColorIndex&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Ensure that a proper color is selected&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (HighlightColor &amp;lt; 0) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' The default is light blue&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HighlightColor = 37&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Add 1 to the color index of the current cell&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HighlightColor = HighlightColor + 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Highlight the actual target cells&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (target.Cells.Count = 1) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BandCell target, HighlightColor&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BandCell target.Cells(1, 1), HighlightColor&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Highlight the same column's cells above&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CurrentRow = target.Cells(1, 1).Row&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CurrentColumn = target.Cells(1, 1).Column&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = CurrentRow - 1 To 1 Step -1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BandCell target.Worksheet.Cells(i, CurrentColumn), HighlightColor&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next i&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Highlight the same row's cells to the left&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' TODO: How about other cultures? (R-t-L)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = CurrentColumn - 1 To 1 Step -1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BandCell target.Worksheet.Cells(CurrentRow, i), HighlightColor&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next i&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Private Sub UnBandCell(ByVal cell As Range)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim fc As FormatCondition&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (Not cell Is Nothing) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' If this cell has any conditional formatting at all&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (cell.FormatConditions.Count &amp;gt; 0) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Find the conditional formatting this macro applied&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each fc In cell.FormatConditions&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' This is based on the formula and the expression type&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Note: in the very unlikely case that someone actually has a use for&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' this conditional formatting, it would be deleted also&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (fc.Formula1 = "TRUE" And fc.Type = 2) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fc.Delete&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Private Sub BandCell(ByVal cell As Range, ByVal color As Variant)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Ensure that the cell's background color is not the same as the color about to be applied&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (color = cell.Interior.color) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; color = color + 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Ensure that the cell's font color is not the same as the color about to be applied&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (color = cell.Font.color) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; color = color + 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' If there are no conditional formattings applied yet&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (cell.FormatConditions.Count = 0) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Apply it&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cell.FormatConditions.Add xlExpression, , "TRUE"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cell.FormatConditions(1).Interior.ColorIndex = color&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Not all is well with this solution. Because four loops have to be executed and conditional formatting is applied on a cell-by-cell basis, slower machines may experience a delay, especially the further away from the A:1 cell the cursor is positioned. Also, if it would so happen that all cells that would be highlighted by this macro already have conditional formatting applied, not a single cell will be highlighted. Of course, this does not cause any harm, but then again, the macro doesn't do anything to make the spreadsheet easier to use either.&lt;/P&gt;
&lt;P&gt;[1]: &lt;A href="http://office.microsoft.com/en-us/assistance/HA011366231033.aspx"&gt;http://office.microsoft.com/en-us/assistance/HA011366231033.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=12" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=12</wfw:commentRss></entry><entry><title>Alabama Code Camp: October 29th</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2005/09/30/11.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:11</id><created>2005-09-30T07:39:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Alabama .NET code community, if you were not already aware, mark your calendars: on October 29th, the first Alabama Code Camp will be held in Birmingham. It's&amp;nbsp;an event for developers by developers, and registration is free (but required). You can find registration information, directions, and session listings at their &lt;A href="http://www.alabamacodecamp.com"&gt;web site&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I will be speaking about Web Services Enhancements 2.0 and 3.0 and specifically how those products can be used in real-world applications. I am developing a commercial application at this time that uses WSE 2.0 (and soon 3.0), so I will be able to provide some interesting insights.&lt;/P&gt;
&lt;P&gt;I will post a link to my presentation and code downloads on my blog shortly after the Code Camp is over.&lt;/P&gt;
&lt;P&gt;I hope to see you there!&lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=11" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=11</wfw:commentRss></entry><entry><title>Visual Studio 2005 July CTP: bugs fixed, VB.NET still slow, other improvements</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2005/08/15/10.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:10</id><created>2005-08-15T16:00:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;I apologize that it has been a while since I have posted anything on my blog. I have several ideas in the pipeline, including some management posts, but both professional and personal enterprises have kept me from actually creating any content.&lt;/P&gt;
&lt;P&gt;I have been working with July Community Technology Preview of VS 2005. I had already mentioned that many bugs in Beta 2 had been fixed in the June CTP. By using the July CTP more in-depth (including at a customer's site), I have indeed been able to validate that those bugs have been resolved.&lt;/P&gt;
&lt;P&gt;I have to say though that the environment works a lot better for C# than it does for VB.NET (at this time). I believe that VB.NET's background compiler still has some issues left. Even though the memory leak is gone, the environment is really slow when a line is being edited where a warning or error occurs. It may take 5-7 seconds before the environment responds again. (This is running VS 2005 July CTP (team suite) in a virtual machine (MS Virtual PC) on Windows XP Professional SP 2 with 512 MB of RAM).&lt;/P&gt;
&lt;P&gt;There are several new features in the IDE I like a lot. I believe that for managing projects, the most important improvement is that "solution folders" can now be created which allow the solution's projects to be grouped together logically instead of allowing only alphabetical listings. I've seen that a popular way of grouping projects in a solution goes something like this: "Client", "Server", "Service Interfaces", "Data Access", etc. In other words, grouping the projects by the logical application layer to which their output belongs. This is also my first use for the solution folders. I am wondering if anyone has a more creative use for solution folders?&lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=10" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=10</wfw:commentRss></entry><entry><title>VS 2005 Beta 2 and June CTP</title><link rel="alternate" type="text/html" href="http://www.adduxis.com/blogs/blogs/sven/archive/2005/06/30/9.aspx" /><id>7e3856d2-7138-48af-b2f2-33d7340af43e:9</id><created>2005-06-30T08:12:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;I wrote before that I would validate fixes for the bugs I found previously in VS 2005. Unfortunately, many had not been fixed in the Beta 2 release. The two most annoying ones are documented in [1] and [2]. They are particularly annoying because they deal with cryptography. As such, any application that relies on one of these cryptography features (a major project I am working on relies on both) won't run properly.&lt;/P&gt;
&lt;P&gt;Now, the good news is that in the June 2005 Community Technology Preview, many bugs are fixed, including the PasswordDeriveBytes one. The memory leak in the VB.NET background compiler [3] also seems to be gone. These fixes result in a much more workable environment. I will be trying (again) to port the project to VS 2005. Hopefully for good this time.&lt;/P&gt;
&lt;P&gt;[1]: &lt;A href="http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=e6c1cf73-87b2-4260-8c95-80b7e217d1b1"&gt;PasswordDeriveBytes returns different results than .NET 1.1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;[2]: &lt;A href="http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=76ea8092-cebe-49ee-a98a-7266ca52724b"&gt;RSACryptoServiceProvider.SignHash fails with "Keyset does not exist"&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;[3]: &lt;A href="http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=5f121acd-3cf5-4698-b970-f4ce90bfaf1f"&gt;Memory Leak in VS 2005 Beta 2 (possibly related to vb background compiler)&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.adduxis.com/blogs/aggbug.aspx?PostID=9" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.adduxis.com/blogs/blogs/sven/commentrss.aspx?PostID=9</wfw:commentRss></entry></feed>