<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>完美Excel</title>
	<link>http://www.excelperfect.com</link>
	<description>Excel资讯 技术 技巧 资源 应用 ...... 及其他技术</description>
	<pubDate>Tue, 19 Aug 2008 00:35:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.2</generator>
	<language>en</language>
			<item>
		<title>在工作表中动态添加窗体控件</title>
		<link>http://www.excelperfect.com/2008/08/19/addcomboxinws/</link>
		<comments>http://www.excelperfect.com/2008/08/19/addcomboxinws/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 00:35:04 +0000</pubDate>
		<dc:creator>excelperfect</dc:creator>
		
	<dc:subject>窗体控件</dc:subject>
	<dc:subject>Excel/VBA技巧</dc:subject>
	<dc:subject>ExcelVBA程序</dc:subject>
	<dc:subject>VBA</dc:subject><dc:subject>窗体控件</dc:subject><dc:subject>组合框</dc:subject><dc:subject>VBA</dc:subject>
		<guid isPermaLink="false">http://www.excelperfect.com/2008/08/19/addcomboxinws/</guid>
		<description><![CDATA[下面的内容及程序代码模仿自《Excel 2007 VBA Programmer&#8217;s Reference》，可能在某些情形下极其有用，因此特辑录于此，供参考。
如下图所示，双击工作表Sheet1的列A中的任一单元格，将出现一组... ]]></description>
			<content:encoded><![CDATA[<p>下面的内容及程序代码模仿自《Excel 2007 VBA Programmer&#8217;s Reference》，可能在某些情形下极其有用，因此特辑录于此，供参考。<br />
如下图所示，双击工作表Sheet1的列A中的任一单元格，将出现一组合框，允许用户选择其中的项目。当用户选取某项目后，将自动输入到该单元格，并在该单元格右侧的单元格中输入相应的价格数字，组合框同时消失。<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/addcomboxdynamic1.png" title="addcomboxdynamic1"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/addcomboxdynamic1.png" alt="addcomboxdynamic1" /></a><br />
下面是程序代码。在工作表Sheet1的代码模块中输入BeforeDoubleClick事件代码：<br />
<font face="Courier"><span style="color: #00007f">Private</span> <span style="color: #00007f">Sub</span> Worksheet_BeforeDoubleClick(<span style="color: #00007f">ByVal</span> Target <span style="color: #00007f">As</span> Range, Cancel <span style="color: #00007f">As</span> <span style="color: #00007f">Boolean</span>)<br />
     <span style="color: #00007f">If</span> <span style="color: #00007f">Not</span> Intersect(Target, Columns(&#8221;A&#8221;)) <span style="color: #00007f">Is</span> <span style="color: #00007f">Nothing</span> <span style="color: #00007f">Then</span><br />
         <span style="color: #00007f">Call</span> AddDropDown(Target)<br />
         Cancel = <span style="color: #00007f">True</span><br />
    <span style="color: #00007f">End</span> <span style="color: #00007f">If</span><br />
<span style="color: #00007f">End</span> <span style="color: #00007f">Sub</span></font><br />
在任一模块中，输入下面的代码：<br />
<font face="Courier"><span style="color: #00007f">Sub</span> AddDropDown(Target <span style="color: #00007f">As</span> Range)<br />
    <span style="color: #00007f">Dim</span> ddBox <span style="color: #00007f">As</span> DropDown<br />
    <span style="color: #00007f">Dim</span> vProducts <span style="color: #00007f">As</span> <span style="color: #00007f">Variant</span><br />
    <span style="color: #00007f">Dim</span> i <span style="color: #00007f">As</span> <span style="color: #00007f">Integer</span><br />
    <span style="color: #007f00">&#8216;创建产品数组</span><br />
    vProducts = Array(&#8221;香蕉&#8221;, &#8220;苹果&#8221;, &#8220;菠萝&#8221;, &#8220;葡萄&#8221;)<br />
    <span style="color: #007f00">&#8216;在目标单元格中添加下拉控件</span><br />
    <span style="color: #00007f">With</span> Target<br />
        <span style="color: #00007f">Set</span> ddBox = Sheet1.DropDowns.Add(.Left, .Top, .Width, .Height)<br />
    <span style="color: #00007f">End</span> <span style="color: #00007f">With</span><br />
    <span style="color: #007f00">&#8216;定义执行的宏并填充列表</span><br />
    <span style="color: #00007f">With</span> ddBox<br />
        .OnAction = &#8220;EnterProdInfo&#8221;<br />
        <span style="color: #00007f">For</span> i = <span style="color: #00007f">LBound</span>(vProducts) <span style="color: #00007f">To</span> <span style="color: #00007f">UBound</span>(vProducts)<br />
            .AddItem vProducts(i)<br />
        <span style="color: #00007f">Next</span> i<br />
    <span style="color: #00007f">End</span> <span style="color: #00007f">With</span><br />
<span style="color: #00007f">End</span> <span style="color: #00007f">Sub</span></p>
<p><span style="color: #00007f">Private</span> <span style="color: #00007f">Sub</span> EnterProdInfo()<br />
    <span style="color: #00007f">Dim</span> vPrices <span style="color: #00007f">As</span> <span style="color: #00007f">Variant</span><br />
    <span style="color: #007f00">&#8216;创建价格数组</span><br />
    vPrices = Array(6, 8, 5, 4)<br />
    <span style="color: #007f00">&#8216;输入所选项到相应的单元格</span><br />
    <span style="color: #00007f">With</span> Sheet1.DropDowns(Application.Caller)<br />
        .TopLeftCell.Value = .List(.ListIndex)<br />
        .TopLeftCell.Offset(0, 1).Value = vPrices(.ListIndex + <span style="color: #00007f">LBound</span>(vPrices) - 1)<br />
        <span style="color: #007f00">&#8216;删除</span><br />
        .Delete<br />
    <span style="color: #00007f">End</span> <span style="color: #00007f">With</span><br />
<span style="color: #00007f">End</span> <span style="color: #00007f">Sub</span></font><br />
如下图所示：<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/addcomboxdynamic2.png" title="addcomboxdynamic2"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/addcomboxdynamic2.png" alt="addcomboxdynamic2" /></a></p>
<a href="http://www.excelperfect.com/index.php?tag=%E7%AA%97%E4%BD%93%E6%8E%A7%E4%BB%B6" rel="tag">窗体控件</a>, <a href="http://www.excelperfect.com/index.php?tag=%E7%BB%84%E5%90%88%E6%A1%86" rel="tag">组合框</a>, <a href="http://www.excelperfect.com/index.php?tag=vba" rel="tag">VBA</a><div class="aizattos_related_posts"><span class="aizattos_related_posts_header" >Related Posts</span><ul><li><span class="aizattos_related_posts_title">No related posts</span></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.excelperfect.com/2008/08/19/addcomboxinws/feed/</wfw:commentRss>
		</item>
		<item>
		<title>国际标准组织驳回申诉 微软OOXML正式成国际标准</title>
		<link>http://www.excelperfect.com/2008/08/16/ooxmlbs/</link>
		<comments>http://www.excelperfect.com/2008/08/16/ooxmlbs/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 14:18:34 +0000</pubDate>
		<dc:creator>excelperfect</dc:creator>
		
	<dc:subject>Excel文件格式</dc:subject>
	<dc:subject>Excel资讯</dc:subject>
		<guid isPermaLink="false">http://www.excelperfect.com/2008/08/16/ooxmlbs/</guid>
		<description><![CDATA[本消息来自cnBeta.
国际标准化组织(ISO)和国际电工技术委员会(IEC)已经批准发布微软支持的Office Open XML规范。
国际标准化组织本周五表示,该组织和国际电工技术委员会的技术理事会已经批准发布... ]]></description>
			<content:encoded><![CDATA[<p><em>本消息来自cnBeta.</em><br />
<strong>国际标准化组织(ISO)和国际电工技术委员会(IEC)已经批准发布微软支持的Office Open XML规范。</strong><br />
国际标准化组织本周五表示,该组织和国际电工技术委员会的技术理事会已经批准发布 ISO/IEC DIS 29500。ISO/IEC DIS 29500是Office Open XML规范的正式名称。如果没有其它国家提出申诉,两大标准组织将在完成最后程序后的数周时间内发布这一标准。<br />
据国际标准化组织的一份新闻公报称,巴西、印度、南非和委内瑞拉的申诉没有获得国际标准化委员会技术管理理事会和国际电工技术委员会标准化管理理事会三分之二成员的支持。获得三分之二成员支持是启动申诉程序所要求的条件。<br />
但这四个国家可以向国际标准化委员会和国际电工技术委员会的执行理事会进行申诉。<br />
国际标准化委员会和国际电工技术委员会的负责人上个月建议驳回这四个国家的申诉。<br />
国际标准化委员会4月1日通过投票表决的方式批准Office Open XML规范成为国际标准。巴西、印度、南非和委内瑞拉抵制了4月1日的投票。</p>
没有标签<div class="aizattos_related_posts"><span class="aizattos_related_posts_header" >Related Posts</span><ul><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/03/26/ooxmlwhystandard/" rel="bookmark" title="Permanent Link: OOXML：缘何不能成为标准？" >OOXML：缘何不能成为标准？</a></span><div class="aizattos_related_posts_excerpt">据IBM
标准支持者谈 OOXML
一直以来，OOXML 规范不断受到一些人的指责和抵制&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/01/25/microsoftxmllevel/" rel="bookmark" title="Permanent Link: 微软OOXML再闯国际标准关 2000页修改后文档公布" >微软OOXML再闯国际标准关 2000页修改后文档公布</a></span><div class="aizattos_related_posts_excerpt">据cnBeta的消息：
国际标准组织ISO计划于今年2月底再次开会讨论微软文档标&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/02/26/ooxml2news/" rel="bookmark" title="Permanent Link: 关于OOXML的两则消息" >关于OOXML的两则消息</a></span><div class="aizattos_related_posts_excerpt">据cnBeta：
ISO代表开审微软OOXML 3月底就国际标准表决
本周政府专家们将在&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/06/11/open-xml-format-sdk-10-%e5%8f%91%e5%b8%83/" rel="bookmark" title="Permanent Link: Open XML Format SDK 1.0 发布" >Open XML Format SDK 1.0 发布</a></span></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/09/05/msooxmlnews/" rel="bookmark" title="Permanent Link: OOXML首轮投票未通过" >OOXML首轮投票未通过</a></span></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.excelperfect.com/2008/08/16/ooxmlbs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Excel Hacks #3：阻止用户执行某些操作</title>
		<link>http://www.excelperfect.com/2008/08/16/excelhacks3/</link>
		<comments>http://www.excelperfect.com/2008/08/16/excelhacks3/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 11:48:31 +0000</pubDate>
		<dc:creator>excelperfect</dc:creator>
		
	<dc:subject>Excel/VBA技巧</dc:subject>
	<dc:subject>Excel事件</dc:subject>
	<dc:subject>VBA</dc:subject><dc:subject>Excel</dc:subject><dc:subject>Hacks</dc:subject><dc:subject>VBA</dc:subject>
		<guid isPermaLink="false">http://www.excelperfect.com/2008/08/16/excelhacks3/</guid>
		<description><![CDATA[虽然Excel为工作簿和工作表提供了全面的保护，但是这种“生硬的”工具没有限制用户的“特权”，除非您使用一些技巧。
通过监控和响应事件，您能够管理电子表格与用户的交互。事件是处... ]]></description>
			<content:encoded><![CDATA[<p><font color="#0000ff"><strong>虽然Excel为工作簿和工作表提供了全面的保护，但是这种“生硬的”工具没有限制用户的“特权”，除非您使用一些技巧。<br />
</strong></font>通过监控和响应事件，您能够管理电子表格与用户的交互。事件是处理工作簿和工作表时所发生的操作。一些常见的事件包括打开工作簿、保存工作簿和关闭工作簿。当触发这些事件中的任一事件时，您能告诉Excel自动执行一些VB代码。<br />
<font color="#0000ff">提示：用户能够通过完全禁用宏，从而避免所有保护。单击Office按钮─—Excel选项─—信任中心─—信任中心设置，按“宏设置”按钮，如果安全性被设置为“禁用所有宏，并且不通知”，那么在打开含有宏的工作簿时将没有机会运行宏。<br />
</font><strong><font color="#0000ff">阻止工作簿“另存为…”<br />
</font></strong>通过选择Office按钮─—保存─—工具按钮─—常规选项，然后选中“建议只读”复选框，这样可以指定任何工作簿被保存为只读。这能阻止用户对该文件保存所做的任何修改，除非将其保存为不同的名称或者在不同的位置保存该文件。<br />
然而，有时您可能想阻止用户使用或者不使用不同的名称在另一个目录或文件夹中保存工作簿副本。换句话说，您想用户能够在现有文件中保存，而不是在其他地方保存另一个副本。当多个人对某个工作簿保存修改时，这特别方便，此时不会存在保存在不同文件夹中相同工作簿的多个副本。<br />
自从Excel 97后，就可以使用“保存前”事件了。正如其名称所述，该事件在工作簿被保存之前发生，能够在事实发生之前捕获用户、发出警告，以及阻止Excel保存。<br />
要插入代码，打开工作簿并选择“开发工具─—Visual Basic”，双击工程资源管理器中的ThisWorkbook，在VBE中输入下面的代码，如图1所示，然后返回工作簿，再保存工作簿：<br />
<font face="Courier"><span style="color: #00007f">Private</span> <span style="color: #00007f">Sub</span> Workbook_BeforeSave(<span style="color: #00007f">ByVal</span> SaveAsUI <span style="color: #00007f">As</span> <span style="color: #00007f">Boolean</span>, Cancel <span style="color: #00007f">As</span> <span style="color: #00007f">Boolean</span>)<br />
    <span style="color: #00007f">Dim</span> lReply As <span style="color: #00007f">Long</span><br />
    <span style="color: #00007f">If</span> SaveAsUI = <span style="color: #00007f">True</span> <span style="color: #00007f">Then</span><br />
        lReply = MsgBox(&#8221;对不起,不允许您以其它名称保存本工作簿.&#8221; &amp; _<br />
            &#8221;您希望保存本工作簿吗?&#8221;, vbQuestion + vbOKCancel)<br />
        Cancel = (lReply = vbCancel)<br />
        <span style="color: #00007f">If</span> Cancel = <span style="color: #00007f">False</span> <span style="color: #00007f">Then</span> Me.Save<br />
        Cancel = <span style="color: #00007f">True</span><br />
    <span style="color: #00007f">End</span> <span style="color: #00007f">If</span><br />
<span style="color: #00007f">End</span> <span style="color: #00007f">Sub</span></font><br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/beforesave.png" title="beforesave"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/beforesave.png" alt="beforesave" /></a><br />
图1：输入到ThisWorkbook中的代码<br />
此时，选择“Office按 钮─—保存”，该工作簿将按预料的那样保存。然而，在选择“Office按钮─—另存为”时，Excel将通知您不能以其它的名称保存该工作簿，除非您禁用宏。<br />
<font color="#0000ff">提示：当在Excel 2007中保存工作簿时，如果该工作簿包含宏或代码，那么应该将工作簿保存为启用宏的工作簿（*.xlsm），而不能保存为标准的Excel文件格式（ *.xlsx）。</font><br />
<strong><font color="#0000ff">阻止用户打印工作簿<br />
</font></strong>可能您想阻止用户打印您的工作簿，此时使用Excel的“打印前”事件。在VBE中输入下面的代码：<br />
<font face="Courier"><span style="color: #00007f">Private</span> <span style="color: #00007f">Sub</span> Workbook_BeforePrint(Cancel <span style="color: #00007f">As</span> <span style="color: #00007f">Boolean</span>)<br />
    Cancel = <span style="color: #00007f">True</span><br />
    MsgBox &#8220;对不起,您不能打印本工作簿.&#8221;, vbInformation<br />
<span style="color: #00007f">End</span> <span style="color: #00007f">Sub</span></font><br />
如果希望仅阻止用户打印工作簿中特定的工作表，使用下列代码：<br />
<font face="Courier"><span style="color: #00007f">Private</span> <span style="color: #00007f">Sub</span> Workbook_BeforePrint(Cancel <span style="color: #00007f">As</span> <span style="color: #00007f">Boolean</span>)<br />
    <span style="color: #00007f">Select</span> <span style="color: #00007f">Case</span> ActiveSheet.Name<br />
        <span style="color: #00007f">Case</span> &#8220;Sheet1&#8243;, &#8220;Sheet2&#8243;<br />
        Cancel = <span style="color: #00007f">True</span><br />
        MsgBox &#8220;对不起,您不能打印本工作簿中的这个工作表.&#8221;, vbInformation<br />
    <span style="color: #00007f">End</span> <span style="color: #00007f">Select</span><br />
<span style="color: #00007f">End</span> <span style="color: #00007f">Sub</span></font><br />
注意，您指定阻止打印工作表“Sheet1”和“Sheet2”。当然，可以修改为工作簿中的任何工作表的名称。要添加工作表，只需在代码后面加上逗号，然后在双引号中输入该工作表的名称。<br />
<strong><font color="#0000ff">阻止用户插入更多的工作表<br />
</font></strong>Excel可以保护工作簿的结构以便用户不能删除工作表、重新排列它们出现的顺序、重新命名它们，等等。但是，有时希望仅阻止添加更多的工作表，而仍然允许其它的结构更改。<br />
可以使用下列代码：<br />
<font face=Courier New><SPAN style="color:#00007F">Private</SPAN> <SPAN style="color:#00007F">Sub</SPAN> Workbook_NewSheet(<SPAN style="color:#00007F">ByVal</SPAN> Sh <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Object</SPAN>)<br />&#160;&#160;&#160;&#160;Application.DisplayAlerts = <SPAN style="color:#00007F">False</SPAN><br />&#160;&#160;&#160;&#160;MsgBox &#8220;对不起,不能对工作簿添加任一工作表.&#8221;, vbInformation<br />&#160;&#160;&#160;&#160;Sh.Delete<br />&#160;&#160;&#160;&#160;Application.DisplayAlerts = <SPAN style="color:#00007F">True</SPAN><br /><SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN></FONT><br />
上述代码首先显示消息框，然后在用户单击消息框中的确定按钮后立即删除新添加的工作表。Application.DisplayAlerts = False语句的阻止标准的Excel警告，即要求用户是否想删除工作表。<br />
另一种阻止用户添加工作表的方法是，选择“审阅─—更改─—保护工作簿”，然后按下“保护结构和窗口”。然而，正如本技巧开始所述，Excel的工作表保护是相当“生硬的”工具，它会同时阻止了许多其它的Excel功能。</p>
<p>注：初译自《Excel Hacks》，仅供参考。</p>
<a href="http://www.excelperfect.com/index.php?tag=excel" rel="tag">Excel</a>, <a href="http://www.excelperfect.com/index.php?tag=hacks" rel="tag">Hacks</a>, <a href="http://www.excelperfect.com/index.php?tag=vba" rel="tag">VBA</a><div class="aizattos_related_posts"><span class="aizattos_related_posts_header" >Related Posts</span><ul><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/12/14/introexcelapplyallcontent/" rel="bookmark" title="Permanent Link: 《Excel应用大全》双目录一览" >《Excel应用大全》双目录一览</a></span><div class="aizattos_related_posts_excerpt">在EH中已公布了《Excel应用大全》一书的目录，让我们先睹为快。
该书开创&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/01/17/excelsafe111111/" rel="bookmark" title="Permanent Link: Excel 发现安全漏洞 可远程安插恶意代码" >Excel 发现安全漏洞 可远程安插恶意代码</a></span><div class="aizattos_related_posts_excerpt">刚在CB上看到的一篇文章，辑录于此。
微软于周二发布了一个安全警告，称&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/09/01/excelservicesbookinfo/" rel="bookmark" title="Permanent Link: 关于Excel Services的图书信息" >关于Excel Services的图书信息</a></span><div class="aizattos_related_posts_excerpt">下面介绍两本由Excel Services团队编著的两本图书。文章参考：Microsoft Excel和Ex&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/06/17/30%e4%b8%aa%e4%bc%98%e7%a7%80wordpress%e6%8a%80%e5%b7%a7/" rel="bookmark" title="Permanent Link: 30个优秀Wordpress技巧" >30个优秀Wordpress技巧</a></span></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/09/26/excel2007fileformat/" rel="bookmark" title="Permanent Link: Excel 2007中的新文件格式" >Excel 2007中的新文件格式</a></span></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.excelperfect.com/2008/08/16/excelhacks3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Excel Hacks #2：同时输入数据到多个工作表</title>
		<link>http://www.excelperfect.com/2008/08/14/excelhacks2/</link>
		<comments>http://www.excelperfect.com/2008/08/14/excelhacks2/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 05:13:09 +0000</pubDate>
		<dc:creator>excelperfect</dc:creator>
		
	<dc:subject>Excel/VBA技巧</dc:subject>
	<dc:subject>Excel2007基础应用</dc:subject>
	<dc:subject>VBA</dc:subject><dc:subject>Excel</dc:subject><dc:subject>Hacks</dc:subject><dc:subject>VBA</dc:subject><dc:subject>工作表</dc:subject>
		<guid isPermaLink="false">http://www.excelperfect.com/2008/08/14/excelhacks2/</guid>
		<description><![CDATA[经常需要在多个工作表中重复某些数据。可以使用Excel的组合工具，使得在某工作表中输入数据时能够同时将数据输入到多个工作表中。然而，也有更快速且灵活的方式，即使用VBA代码。
在Excel... ]]></description>
			<content:encoded><![CDATA[<p>经常需要在多个工作表中重复某些数据。可以使用Excel的组合工具，使得在某工作表中输入数据时能够同时将数据输入到多个工作表中。然而，也有更快速且灵活的方式，即使用VBA代码。<br />
在Excel中，有一项能使数据一次放置在多个位置的功能，称之为组。其操作是通过将工作表组合在一起，以便它们在工作簿内建立链接。<br />
手工组合工作表<br />
要手工使用组的功能，只需简单地单击将要输入数据的工作表，并在单击想要放置数据的工作表的标签名时按住Ctrl键。此时，当在工作表的任意单元格中输入数据时，这些数据也将自动输入到已组合的其它工作表中。<br />
要取消工作表组合，只需单击除组合的工作表之外的其它任一工作表标签，或者在工作表标签中单击右键，选择“取消组合工作表”命令。<br />
提示：当将工作表组合在一起时，能够看到标题栏中在工作簿名称后面添加了一对方括号，其中显示“工作组”。这能很方便地查看工作表是否是组合的。建议在完成同步输入数据操作后，取消工作表组合。<br />
虽然上面介绍的方法很容易，但也意味着需要记住工作表是否处于组合状态，并且在不需要时取消组合，否则将存在覆盖其它工作表数据的风险。例如，您可能想仅对某特定的单元格区域同步输入数据，如果在其它区域输入数据时，忘记取消工作表组合则可能覆盖掉其它工作表中已存在的数据或者输入不需要的数据。<br />
自动组合工作表<br />
能够通过使用一些非常简单的VBA代码克服上述缺点。要使这些代码能够工作，必须将它们放置在Sheet对象的私有模块中。即在VBE中右击工作表名称，选择“查看代码”或者双击工作表名称。然后，使用Excel的工作表事件之一，并将代码放置在事件过程中。<br />
首先命名希望成组的单元格区域，以便在其它工作表中自动显示数据。然后，在工作表模块中输入下面的代码：<br />
Private Sub Worksheet_SelectionChange(ByVal Target As Range)<br />
    If Not Intersect(Range(&#8221;MyRange&#8221;), Target) Is Nothing Then<br />
        &#8216;有目的的将工作表Sheet5放置在第一位,使之成为活动工作表<br />
        Sheets(Array(&#8221;Sheet5&#8243;, &#8220;Sheet3&#8243;, &#8220;Sheet1&#8243;)).Select<br />
    Else<br />
        Me.Select<br />
    End If<br />
End Sub<br />
在代码中，使用了命名的区域MyRange，可以将MyRange修改为您工作表中使用的单元格区域名称，同时修改代码中三个工作表名称为希望组合的工作表名称。<br />
<a href='http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/syncode.png' title='syncode'><img src='http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/syncode.png' alt='syncode' /></a><br />
图：自动组合工作表的代码<br />
注意，代码中在数组中使用的第一个工作表名必须是包含代码的工作表，并且您将在该工作表中输入数据。<br />
一旦编写好代码，每次选择工作表中的任意单元格时，代码就会检查是否所选的单元格在命名区域MyRange中。如果在该区域，那么代码将自动组合你希望组合的工作表。如果不在，将通过激活正处理的工作表而取消组合。这项技巧的优点是不需要人工组合工作表，因而没有因为忘记取消组合而造成的危险，同时节省了时间并避免产生障碍。<br />
如果希望在其它工作表中显示相同的数据，但不是出现在相同的单元格地址，那么使用如下的代码：<br />
Private Sub Worksheet_Change(ByVal Target As Range)<br />
    If Not Intersect(Range(&#8221;MyRange&#8221;), Target) Is Nothing Then<br />
        With Range(&#8221;MyRange&#8221;)<br />
            .Copy Destination:=Sheets(&#8221;Sheet3&#8243;).Range(&#8221;A1&#8243;)<br />
            .Copy Destination:=Sheets(&#8221;Sheet1&#8243;).Range(&#8221;D10&#8243;)<br />
        End With<br />
    End If<br />
End Sub<br />
上面的代码也需要放置在Sheet对象的模块中，具体操作与前面内容相同。</p>
<p>注：初译自《Excel Hacks》，仅供参考。</p>
<a href="http://www.excelperfect.com/index.php?tag=excel" rel="tag">Excel</a>, <a href="http://www.excelperfect.com/index.php?tag=hacks" rel="tag">Hacks</a>, <a href="http://www.excelperfect.com/index.php?tag=vba" rel="tag">VBA</a>, <a href="http://www.excelperfect.com/index.php?tag=%E5%B7%A5%E4%BD%9C%E8%A1%A8" rel="tag">工作表</a><div class="aizattos_related_posts"><span class="aizattos_related_posts_header" >Related Posts</span><ul><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/12/14/introexcelapplyallcontent/" rel="bookmark" title="Permanent Link: 《Excel应用大全》双目录一览" >《Excel应用大全》双目录一览</a></span><div class="aizattos_related_posts_excerpt">在EH中已公布了《Excel应用大全》一书的目录，让我们先睹为快。
该书开创&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/01/17/excelsafe111111/" rel="bookmark" title="Permanent Link: Excel 发现安全漏洞 可远程安插恶意代码" >Excel 发现安全漏洞 可远程安插恶意代码</a></span><div class="aizattos_related_posts_excerpt">刚在CB上看到的一篇文章，辑录于此。
微软于周二发布了一个安全警告，称&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/09/01/excelservicesbookinfo/" rel="bookmark" title="Permanent Link: 关于Excel Services的图书信息" >关于Excel Services的图书信息</a></span><div class="aizattos_related_posts_excerpt">下面介绍两本由Excel Services团队编著的两本图书。文章参考：Microsoft Excel和Ex&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/06/17/30%e4%b8%aa%e4%bc%98%e7%a7%80wordpress%e6%8a%80%e5%b7%a7/" rel="bookmark" title="Permanent Link: 30个优秀Wordpress技巧" >30个优秀Wordpress技巧</a></span></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/09/26/excel2007fileformat/" rel="bookmark" title="Permanent Link: Excel 2007中的新文件格式" >Excel 2007中的新文件格式</a></span></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.excelperfect.com/2008/08/14/excelhacks2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Excel Hacks #1：创建工作簿的个性化视图</title>
		<link>http://www.excelperfect.com/2008/08/12/excelhacks1/</link>
		<comments>http://www.excelperfect.com/2008/08/12/excelhacks1/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 05:08:48 +0000</pubDate>
		<dc:creator>excelperfect</dc:creator>
		
	<dc:subject>Excel/VBA技巧</dc:subject>
	<dc:subject>Excel2007基础应用</dc:subject><dc:subject>Excel</dc:subject><dc:subject>工作簿</dc:subject><dc:subject>工作区</dc:subject>
		<guid isPermaLink="false">http://www.excelperfect.com/2008/08/12/excelhacks1/</guid>
		<description><![CDATA[在Excel中，能够同时显示多个工作簿，并且可以有在不同窗口排列的工作簿自定义视图，然后将视图工作区保存为.xlw文件并在需要时使用它们。
有时，当在Excel中进行操作时，可能需要在屏幕... ]]></description>
			<content:encoded><![CDATA[<p><font color="#0000ff"><strong>在Excel中，能够同时显示多个工作簿，并且可以有在不同窗口排列的工作簿自定义视图，然后将视图工作区保存为.xlw文件并在需要时使用它们。</strong></font><br />
有时，当在Excel中进行操作时，可能需要在屏幕中打开多个工作簿，使之更容易使用或者从多个工作簿中查看数据。下面介绍如何以整洁且有组织的方式进行这项操作。<br />
首先，打开所有需要的工作簿。<br />
<font color="#0000ff">技巧：要一次打开多个工作簿，选择“Office按钮─—打开”，在“打开”对话框中，在按住Ctrl键的同时选择想要打开的工作簿，然后单击“打开”按钮。</font><br />
从任一工作簿中选择“视图─—窗口─—全部重排”，如果“当前活动工作簿的窗口”复选框已选中，则取消选中，然后选择窗口排列方式并单击“确定”。<br />
如果选择“平铺”，将以平铺的形式显示工作簿，如图1所示。<br />
选择“水平并排”使得一个工作簿在另一个工作簿的顶部，如图2所示。<br />
选择“垂直并排”使得一个工作簿紧挨着另一个工作簿，如图3所示。<br />
选择“层叠”将使一个工作簿在另一个工作簿的上方，如图4所示。<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/tiledwindow.png" title="tiledwindow"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/tiledwindow.png" alt="tiledwindow" /></a><br />
图1：平铺方式排列的四个工作簿<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/horizonwindow.png" title="horizonwindow"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/horizonwindow.png" alt="horizonwindow" /></a><br />
图2：水平排列的四个工作簿<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/verticalwindow.png" title="verticalwindow"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/verticalwindow.png" alt="verticalwindow" /></a><br />
图3：垂直排列的四个工作簿<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/layerwindow.png" title="layerwindow"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/layerwindow.png" alt="layerwindow" /></a><br />
图4：层叠的四个工作簿<br />
一旦工作簿按预想的视图显示后，就很容易在工作簿之间移动数据，例如复制、粘贴、拖放等。<br />
如果需要反复创建某个视图，那么能够将其保存为工作区（workspace），即选择“视图─—窗口─—保存工作区”，在“文件名”中输入工作区的文件名，单击“确定”。当保存工作区时，文件的扩展名为.xlw而不是.xlsx。要将某工作簿恢复为完整的窗口，只需双击标题栏。<br />
无论何时需要打开这些同样的工作簿，只需简单地打开.xlw文件。任何对在.xlw文件中的工作簿所作的变化都将在关闭工作区时自动保存，或者可以单独保存工作簿。<br />
如果花些时间为需要在多个打开的工作簿中重复操作而设置自定义视图，将会发现这些操作将更容易管理。可以为不同的重复任务使用不同的视图，这取决于具体的任务或者您的感觉。</p>
<p>注：初译自《Excel Hacks》，仅供参考。</p>
<a href="http://www.excelperfect.com/index.php?tag=excel" rel="tag">Excel</a>, <a href="http://www.excelperfect.com/index.php?tag=%E5%B7%A5%E4%BD%9C%E7%B0%BF" rel="tag">工作簿</a>, <a href="http://www.excelperfect.com/index.php?tag=%E5%B7%A5%E4%BD%9C%E5%8C%BA" rel="tag">工作区</a><div class="aizattos_related_posts"><span class="aizattos_related_posts_header" >Related Posts</span><ul><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/12/14/introexcelapplyallcontent/" rel="bookmark" title="Permanent Link: 《Excel应用大全》双目录一览" >《Excel应用大全》双目录一览</a></span><div class="aizattos_related_posts_excerpt">在EH中已公布了《Excel应用大全》一书的目录，让我们先睹为快。
该书开创&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/01/17/excelsafe111111/" rel="bookmark" title="Permanent Link: Excel 发现安全漏洞 可远程安插恶意代码" >Excel 发现安全漏洞 可远程安插恶意代码</a></span><div class="aizattos_related_posts_excerpt">刚在CB上看到的一篇文章，辑录于此。
微软于周二发布了一个安全警告，称&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/09/01/excelservicesbookinfo/" rel="bookmark" title="Permanent Link: 关于Excel Services的图书信息" >关于Excel Services的图书信息</a></span><div class="aizattos_related_posts_excerpt">下面介绍两本由Excel Services团队编著的两本图书。文章参考：Microsoft Excel和Ex&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/06/17/30%e4%b8%aa%e4%bc%98%e7%a7%80wordpress%e6%8a%80%e5%b7%a7/" rel="bookmark" title="Permanent Link: 30个优秀Wordpress技巧" >30个优秀Wordpress技巧</a></span></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/09/26/excel2007fileformat/" rel="bookmark" title="Permanent Link: Excel 2007中的新文件格式" >Excel 2007中的新文件格式</a></span></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.excelperfect.com/2008/08/12/excelhacks1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>术有专攻 日益精进</title>
		<link>http://www.excelperfect.com/2008/08/11/cessential/</link>
		<comments>http://www.excelperfect.com/2008/08/11/cessential/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 05:24:19 +0000</pubDate>
		<dc:creator>excelperfect</dc:creator>
		
	<dc:subject>Excel图书</dc:subject>
	<dc:subject>.NET开发</dc:subject><dc:subject>C#</dc:subject>
		<guid isPermaLink="false">http://www.excelperfect.com/2008/08/11/cessential/</guid>
		<description><![CDATA[这是周靖老师在其所译的著作《C#本质论》（英文名《Essential C# 2.0》）的译者序所使用的题目。在序中，有一段话很好，特摘录于此，共勉之！
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&... ]]></description>
			<content:encoded><![CDATA[<p>这是周靖老师在其所译的著作《C#本质论》（英文名《Essential C# 2.0》）的译者序所使用的题目。在序中，有一段话很好，特摘录于此，共勉之！<br />
<font color="#0000ff">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</font><br />
最近在看《史记 孔子世家》，撷取孔子学琴一则与各位共勉：<br />
孔子学鼓琴师襄子，十日不进。师襄子曰：“可以益矣。”孔子曰：“丘已习其曲矣，未得其数也。”有间，曰：“已习其数，可以益矣。”孔子曰：“丘未得其志也。”有间，曰：“已习其志，可以益矣。”孔子曰：“丘未得其为人也。”有间，有所穆然深思焉。曰：“丘得其为人，黯然而黑，几然而长，眼如望羊，如王四国，非文王其谁能为此也！”师襄子辟席再拜，曰：“师盖云文王操也。”<br />
这则故事的大意为孔子向师襄子学琴，学了十天并不要求学习新的东西。尽管师襄子一再敦促可以增加新的内容，但孔子坚信，不达到三个境界，不能继续学习新的东西：学习常握演奏的技巧，领会其中的志趣，熟悉乐曲的作者。最终，孔子领悟到乐曲作者的心境，使师襄子叹服不已。<br />
每学习一种新东西，都离不开这三个境界，正所谓“昨夜西风凋碧树，独上高楼，望尽天涯路”，此境界一也；“衣带渐宽终不悔，为伊消得人憔悴”，此境界二也；“众里寻他千百度，回头蓦见，那人正在，灯火阑珊处”，此境界三也。<br />
从事技术图书的翻译多年，经常有读者来信问：“我想学习编程，如何入手？”对待这种问题，我往往会勉励他们，万丈高楼平地起，首先要搭建好整个学习框架，梳理整个学习层次，然后选择合适的入门书夯实基础，完全掌握之后再按照已经搭建好的框架逐一填充各个学习模块。<br />
&#8230;&#8230;</p>
<a href="http://www.excelperfect.com/index.php?tag=c%23" rel="tag">C#</a><div class="aizattos_related_posts"><span class="aizattos_related_posts_header" >Related Posts</span><ul><li><span class="aizattos_related_posts_title">No related posts</span></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.excelperfect.com/2008/08/11/cessential/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Microsoft Office文件翻译集成Live Translator</title>
		<link>http://www.excelperfect.com/2008/08/08/livetranslatorinoffice/</link>
		<comments>http://www.excelperfect.com/2008/08/08/livetranslatorinoffice/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 05:17:14 +0000</pubDate>
		<dc:creator>excelperfect</dc:creator>
		
	<dc:subject>Excel资讯</dc:subject><dc:subject>Live Translator</dc:subject><dc:subject>Office</dc:subject>
		<guid isPermaLink="false">http://www.excelperfect.com/2008/08/08/livetranslatorinoffice/</guid>
		<description><![CDATA[据微软MSDN博客报道，现在，微软的Office已经可以继承Windows Live Translator的翻译功能了，我们可以轻松的将一整篇Word文档或者选取的一部分翻译为另外一种语言了。
此功能即将整合到最新的Micros... ]]></description>
			<content:encoded><![CDATA[<p>据微软MSDN博客报道，现在，微软的Office已经可以继承Windows Live Translator的翻译功能了，我们可以轻松的将一整篇Word文档或者选取的一部分翻译为另外一种语言了。<br />
此功能即将整合到最新的Microsoft Office中，一旦Office开发团队完成了测试，就会自动将这个功能添加到Office中，无需额外的安装步骤，如果大家想要提前体验一下，或者大家使用的是Office 2003版本，那么可以遵循以下的步骤手动进行安装。<br />
Office 2007的安装步骤如下：<br />
1） 点击“审阅”标签。<br />
2） 点击“信息检索”。<br />
3） 点击右下角的“信息检索选项”，如下图所示。<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate1.PNG" title="translate1"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate1.PNG" alt="translate1" /></a><br />
4） 选择“添加服务”按钮。<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate2.PNG" title="translate2"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate2.PNG" alt="translate2" /></a><br />
5） 输入Microsoft Translator的Web Service网址：http://www.windowslivetranslator.com/officetrans/register.asmx ，然后单击“添加”按钮继续。<br />
6） 安装Microsoft翻译服务。只需点击“安装”按钮即可。安装完成后，点击“确定”以关闭选项对话框。<br />
7） 在“信息检索选项”中，选择“翻译选项”。<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate3.PNG" title="translate3"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate3.PNG" alt="translate3" /></a><br />
8） 这时候你会发现“在线机器翻译”中会有一些不同，很多语言的翻译增加了“Windows Live翻译机”。<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate4.PNG" title="translate4"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate4.PNG" alt="translate4" /></a><br />
9） 选择Windows Live Translator为翻译引擎，目前Windows Live翻译支持英语和中文（简体）、中文（繁体）、法语、德语 、意大利语、阿拉伯语、荷兰语、日语、韩语、葡萄牙语、西班牙语的互译。<br />
使用翻译功能的方法如下：<br />
1） 最简单的方法就是，在文档中选择需要翻译的文本，点击“翻译”。<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate5.PNG" title="translate5"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate5.PNG" alt="translate5" /></a><br />
2） 选择翻译的类型，在“将”和“翻译为”的选择框中，选择一个来源和目标语言进行对应的翻译。<br />
3） 查看翻译输出结果。<br />
4） 选择性地将输出结果插入到您的文件中。在底部的翻译输出里，有一个按钮，可以让您轻松将翻译结果插入到您的文件中。<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate6.PNG" title="translate6"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/08/translate6.PNG" alt="translate6" /></a><br />
总的来说，微软的Live Translator翻译结果还算可以，不过在线翻译服务还有很多种选择，要是Office能支持Google的翻译服务就更好了。<br />
转载自cnBeta:http://www.cnbeta.com/articles/61973.htm</p>
<a href="http://www.excelperfect.com/index.php?tag=live-translator" rel="tag">Live Translator</a>, <a href="http://www.excelperfect.com/index.php?tag=office" rel="tag">Office</a><div class="aizattos_related_posts"><span class="aizattos_related_posts_header" >Related Posts</span><ul><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/03/08/msofficepd/" rel="bookmark" title="Permanent Link: 危急MS Office补丁即将到来" >危急MS Office补丁即将到来</a></span><div class="aizattos_related_posts_excerpt">据cnBeta.com消息:
Office似乎遇到麻烦了,来自微软安全部门的预告,Microsoft Excel&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/02/19/microsoftbinaryopen/" rel="bookmark" title="Permanent Link: 微软二进制文档 (.doc, .xls, .ppt) 和转换器的开源工程已经建立" >微软二进制文档 (.doc, .xls, .ppt) 和转换器的开源工程已经建立</a></span><div class="aizattos_related_posts_excerpt">据cnBeta消息
上个月微软承诺将二进制旧Office文档格式技术细节开源,现在该&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/03/26/ooxmlwhystandard/" rel="bookmark" title="Permanent Link: OOXML：缘何不能成为标准？" >OOXML：缘何不能成为标准？</a></span><div class="aizattos_related_posts_excerpt">据IBM
标准支持者谈 OOXML
一直以来，OOXML 规范不断受到一些人的指责和抵制&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/05/07/firstwindowslivewriter/" rel="bookmark" title="Permanent Link: 开始使用Windows Live Writer" >开始使用Windows Live Writer</a></span></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/01/22/microopenbinaryformat/" rel="bookmark" title="Permanent Link: Microsoft开放Office二进制文档格式规范" >Microsoft开放Office二进制文档格式规范</a></span></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.excelperfect.com/2008/08/08/livetranslatorinoffice/feed/</wfw:commentRss>
		</item>
		<item>
		<title>从关闭的工作簿中取值</title>
		<link>http://www.excelperfect.com/2008/08/07/getdataformclosewb0807/</link>
		<comments>http://www.excelperfect.com/2008/08/07/getdataformclosewb0807/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 05:16:35 +0000</pubDate>
		<dc:creator>excelperfect</dc:creator>
		
	<dc:subject>Excel/VBA技巧</dc:subject>
	<dc:subject>ExcelVBA程序</dc:subject>
	<dc:subject>VBA</dc:subject><dc:subject>Excel</dc:subject><dc:subject>Excel工作簿</dc:subject><dc:subject>VBA</dc:subject>
		<guid isPermaLink="false">http://www.excelperfect.com/2008/08/07/getdataformclosewb0807/</guid>
		<description><![CDATA[有许多种从关闭的工作簿中取值的方法，下面是其中之一。下面的VBA代码从关闭的工作簿中获取值。
Sub ExtractDataFromClosedWorkBook()
    
    Application.ScreenUpdating = False
    
     &#8216;创建... ]]></description>
			<content:encoded><![CDATA[<p>有许多种从关闭的工作簿中取值的方法，下面是其中之一。下面的VBA代码从关闭的工作簿中获取值。<br />
<font face="Courier"><span style="color: #00007f">Sub</span> ExtractDataFromClosedWorkBook()<br />
    <br />
    Application.ScreenUpdating = <span style="color: #00007f">False</span><br />
    <br />
     <span style="color: #007f00">&#8216;创建链接来从关闭的工作簿中获取数据</span><br />
     <span style="color: #007f00">&#8216;可以将相关代码修改为相应的路径和单元格</span><br />
    <span style="color: #00007f">With</span> [Sheet1!A1:B4]<br />
        .Value = &#8220;=&#8217;&#8221; &amp; ActiveWorkbook.Path &amp; &#8220;\[testDataWorkbook.xls]Sheet1&#8242;!A1:B4&#8243;<br />
        <br />
         <span style="color: #007f00">&#8216;删除链接</span><br />
        .Value = .Value<br />
    <span style="color: #00007f">End</span> <span style="color: #00007f">With</span><br />
    <br />
    Application.ScreenUpdating = <span style="color: #00007f">True</span><br />
    <br />
<span style="color: #00007f">End</span> <span style="color: #00007f">Sub</span><br />
</font><br />
其中，可以将代码中的路径修改为需要从中获取值的工作簿的路径，单元格也作相应的修改。</p>
<a href="http://www.excelperfect.com/index.php?tag=excel" rel="tag">Excel</a>, <a href="http://www.excelperfect.com/index.php?tag=excel%E5%B7%A5%E4%BD%9C%E7%B0%BF" rel="tag">Excel工作簿</a>, <a href="http://www.excelperfect.com/index.php?tag=vba" rel="tag">VBA</a><div class="aizattos_related_posts"><span class="aizattos_related_posts_header" >Related Posts</span><ul><li><span class="aizattos_related_posts_title">No related posts</span></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.excelperfect.com/2008/08/07/getdataformclosewb0807/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Increment File Names</title>
		<link>http://www.excelperfect.com/2008/08/04/incrementfilenames080804/</link>
		<comments>http://www.excelperfect.com/2008/08/04/incrementfilenames080804/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 05:51:16 +0000</pubDate>
		<dc:creator>excelperfect</dc:creator>
		
	<dc:subject>ExcelVBA程序</dc:subject>
	<dc:subject>VBA</dc:subject>
	<dc:subject>文件与目录</dc:subject><dc:subject>Dir</dc:subject><dc:subject>Excel文件操作</dc:subject>
		<guid isPermaLink="false">http://www.excelperfect.com/2008/08/04/incrementfilenames080804/</guid>
		<description><![CDATA[在dicks的blog中看到了一段解决同名文件问题的程序解决方案，贴出来共享。
有时，必须存储一个名称与现有文件名相同的文件，此时可以在名称末尾添加数字使其唯一。但问题是该文件将放在... ]]></description>
			<content:encoded><![CDATA[<p>在dicks的<a target="_blank" href="http://www.dicks-blog.com/">blog</a>中看到了一段解决同名文件问题的程序解决方案，贴出来共享。<br />
有时，必须存储一个名称与现有文件名相同的文件，此时可以在名称末尾添加数字使其唯一。但问题是该文件将放在三个不同的文件夹中：Working、Review和Archive，需要在这三个文件夹中检查相同的文件名称。<br />
现在，创建一个函数来返回下一个可用的后缀，如果没有相同的文件存在，返回空字符串；如果有相同的文件存在，则返回能够添加到文件名后使其唯一的数字。<br />
该函数遍历文件夹并使用Dir函数来获取相同的名称。为了使用Dir，将搜索的文件更改为包含有星号（*），例如名称为MyFile.xls的成为MyFile*.xls，并且将查找MyFile.xls、MyFile1.xls等等。如果找到匹配项，将分隔数字并记录下最终找到的最大的一个数字。如果没有数字，Replace语句返回一个空字符串并且Val函数将其转换为0。<br />
<font face=Courier New><SPAN style="color:#00007F">Function</SPAN> GetUniqueSuffix(sName <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN>, vaFolders <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Variant</SPAN>) <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN><br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Dim</SPAN> lSuffix <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN>, lMax <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN><br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Dim</SPAN> sDirName <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN><br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Dim</SPAN> sBaseName <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN><br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Dim</SPAN> i <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN><br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Dim</SPAN> sTempName <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN><br />&#160;&#160;&#160;&#160;<br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Const</SPAN> sEXTENSION <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN> = &#8220;.xls&#8221;<br />&#160;&#160;&#160;&#160;<br />&#160;&#160;&#160;&#160;sDirName = Replace(sName, sEXTENSION, &#8220;*&#8221; &#038; sEXTENSION)<br />&#160;&#160;&#160;&#160;sBaseName = Replace(sName, sEXTENSION, &#8220;&#8221;)<br />&#160;&#160;&#160;&#160;<br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">For</SPAN> i = <SPAN style="color:#00007F">LBound</SPAN>(vaFolders) <SPAN style="color:#00007F">To</SPAN> <SPAN style="color:#00007F">UBound</SPAN>(vaFolders)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sTempName = Dir(vaFolders(i) &#038; sDirName)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Do</SPAN> <SPAN style="color:#00007F">Until</SPAN> Len(sTempName) = 0<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;lSuffix = Val(Replace(Replace(sTempName, sBaseName, &#8220;&#8221;), sEXTENSION, &#8220;&#8221;)) + 1<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">If</SPAN> lSuffix > lMax <SPAN style="color:#00007F">Then</SPAN><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;lMax = lSuffix<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sTempName = Dir<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Loop</SPAN><br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Next</SPAN> i<br />&#160;&#160;&#160;&#160;<br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">If</SPAN> lMax > 0 <SPAN style="color:#00007F">Then</SPAN><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetUniqueSuffix = <SPAN style="color:#00007F">CStr</SPAN>(lMax)<br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Else</SPAN><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetUniqueSuffix = &#8220;&#8221;<br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br />&#160;&#160;&#160;&#160;<br /><SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Function</SPAN><br /></FONT><br />
使用示例:<br />
<font face=Courier New><SPAN style="color:#00007F">Sub</SPAN> UniqueSuffixExample()<br />&#160;&#160;&#160;&#160;<br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Dim</SPAN> vaFolders <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Variant</SPAN><br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Dim</SPAN> sFile <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN><br />&#160;&#160;&#160;&#160;<SPAN style="color:#00007F">Dim</SPAN> lUnique <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN><br />&#160;&#160;&#160;&#160;<br />&#160;&#160;&#160;&#160;vaFolders = Array(&#8221;C:\Working\&#8221;, &#8220;C:\Review\&#8221;, &#8220;C:\Archive\&#8221;)<br />&#160;&#160;&#160;&#160;sFile = &#8220;MyFile.xls&#8221;<br />&#160;&#160;&#160;&#160;<br />&#160;&#160;&#160;&#160;lUnique = GetUniqueSuffix(sFile, vaFolders)<br />&#160;&#160;&#160;&#160;sFile = Replace(sFile, &#8220;.xls&#8221;, lUnique &#038; &#8220;.xls&#8221;)<br />&#160;&#160;&#160;&#160;<br />&#160;&#160;&#160;&#160;ActiveWorkbook.SaveAs &#8220;C:\Working\&#8221; &#038; sFile<br />&#160;&#160;&#160;&#160;<br /><SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN></FONT></p>
<a href="http://www.excelperfect.com/index.php?tag=dir" rel="tag">Dir</a>, <a href="http://www.excelperfect.com/index.php?tag=excel%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C" rel="tag">Excel文件操作</a><div class="aizattos_related_posts"><span class="aizattos_related_posts_header" >Related Posts</span><ul><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/01/08/excel2007vbaprogrammer/" rel="bookmark" title="Permanent Link: 《Excel 2007 VBA Programmer&#8217;s Reference》中文版预告" >《Excel 2007 VBA Programmer&#8217;s Reference》中文版预告</a></span><div class="aizattos_related_posts_excerpt">
前不久，电子工业出版社(博文视点)出版了一本Excel专业编程图书《Excel专&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/11/03/filesystemobjectintro/" rel="bookmark" title="Permanent Link: FileSystemObject对象简介" >FileSystemObject对象简介</a></span><div class="aizattos_related_posts_excerpt">FileSystemObject对象位于File System对象模型(如下图所示)的最高层，提供了对计&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/01/22/microopenbinaryformat/" rel="bookmark" title="Permanent Link: Microsoft开放Office二进制文档格式规范" >Microsoft开放Office二进制文档格式规范</a></span><div class="aizattos_related_posts_excerpt">众所周知，在Microsoft Office 2007中，微软引入了一种全新的文档格式：Open XML&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/02/19/microsoftbinaryopen/" rel="bookmark" title="Permanent Link: 微软二进制文档 (.doc, .xls, .ppt) 和转换器的开源工程已经建立" >微软二进制文档 (.doc, .xls, .ppt) 和转换器的开源工程已经建立</a></span></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/02/15/ribbonxbook1/" rel="bookmark" title="Permanent Link: RibbonX:定制Office 2007功能区" >RibbonX:定制Office 2007功能区</a></span></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.excelperfect.com/2008/08/04/incrementfilenames080804/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Excel应用程序开发心得(一)</title>
		<link>http://www.excelperfect.com/2008/07/31/excelappdevelop/</link>
		<comments>http://www.excelperfect.com/2008/07/31/excelappdevelop/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 11:43:18 +0000</pubDate>
		<dc:creator>excelperfect</dc:creator>
		
	<dc:subject>Excel应用</dc:subject>
	<dc:subject>Excel/VBA技巧</dc:subject>
	<dc:subject>ExcelVBA程序</dc:subject>
	<dc:subject>VBA</dc:subject><dc:subject>Excel</dc:subject><dc:subject>VBA</dc:subject><dc:subject>应用程序开发</dc:subject>
		<guid isPermaLink="false">http://www.excelperfect.com/2008/07/31/excelappdevelop/</guid>
		<description><![CDATA[近期正在利用Excel开发一套工作管理系统，已初步有了结果，并开始使用。前不久，在一篇博客文章中，我贴出了该系统的主界面。在这里，随便谈谈在开发过程中的一些心得体会，供大家参考... ]]></description>
			<content:encoded><![CDATA[<p>近期正在利用Excel开发一套工作管理系统，已初步有了结果，并开始使用。前不久，在一篇博客文章中，我贴出了该系统的主界面。在这里，随便谈谈在开发过程中的一些心得体会，供大家参考。</p>
<ul>
<li><font color="#0000ff"><strong>不要将所有任务全部集中在一个工作簿中</strong></font></li>
</ul>
<p>在同一工作簿中不要试图处理所有需要实现的任务。当然，如果您的系统只需实现少有的几项功能，在一个工作簿中集中实现这几项功能是简单方便的。但是，如果需要实现多项任务，特别是需要处理大量数据的情形下，建议将任务进行整合分类，分别放在不同的工作簿中来实现这些任务。<br />
此时，需要规划好各工作簿要实现的功能任务，合理设计各个工作簿之间的关系，理顺各工作簿之间的数据调用，并且使用一个主工作簿来调用各个工作簿，这样使得系统非常灵活、精简，也不致于因使用而致使工作簿体积快速不断增大。<br />
要注意的是，对于存在数据调用的工作簿，一定要清楚调用的顺序，避免因为某一工作簿数据的更换而影响其他相关工作簿数据的准确性。例如，工作簿B需要调用工作簿A中的数据，如果工作簿A中的数据发生变化，那么要及时更新工作簿B中的数据。</p>
<ul>
<li><font color="#0000ff"><strong>利用工作簿的自定义属性来确定工作簿</strong></font></li>
</ul>
<p>为工作簿添加自定义文档属性（即CustomDocumentProperties<br />
属性），从而利用该属性来查找工作簿，或者判断是否为要查找的工作簿，或者能够合并同类工作簿。特别是在有大量名称会发生变化的工作簿时。<br />
单击菜单“文件”─—“属性”，选择“自定义”选项卡，在“名称”中输入相应的名称，在“取值”中输入“Yes”，然后单击“添加”按钮加入属性，如下图所示。<br />
<a href="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/07/addworkbookproperty1.png" title="AddWorkbookProperty1"><img src="http://www.excelperfect.com/wordpress/wp-content/uploads/2008/07/addworkbookproperty1.png" alt="AddWorkbookProperty1" /></a><br />
这样，在多个工作簿相互调用时，可以避免因工作簿名称改变而出现的无法找到工作簿的错误。</p>
<ul>
<li><font color="#0000ff"><strong>避免无谓的循环</strong></font></li>
</ul>
<p>记得及早、适时地退出循环，特别是在存在大量数据而不得不逐一进行循环时。例如，下面的代码，必须在工作表中的第3行至第31行、第2列至第32列依次循环，当满足特定条件后，使用Exit Sub语句退出，从而避免继续循环。如果在更大范围内循环时更应如此。<br />
<font face="Courier">        <span style="color: #00007f">For</span> i = 3 <span style="color: #00007f">To</span> 31<br />
            <span style="color: #007f00">&#8216;循环每一列</span><br />
            <span style="color: #00007f">For</span> j = 2 <span style="color: #00007f">To</span> 32<br />
                <span style="color: #00007f">If</span> Target.Value = &#8220;&#8221; <span style="color: #00007f">Then</span><br />
                    <span style="color: #00007f">If</span> iTotalRow &gt; 1 <span style="color: #00007f">Then</span><br />
                        <span style="color: #00007f">For</span> k = 2 <span style="color: #00007f">To</span> iTotalRow<br />
                            <span style="color: #00007f">If</span> Target.Row = Worksheets(&#8221;Data&#8221;).Range(&#8221;A&#8221; &amp; k) And Target.Column = Worksheets(&#8221;Data&#8221;).Range(&#8221;B&#8221; &amp; k) <span style="color: #00007f">Then</span><br />
                                Worksheets(&#8221;Data&#8221;).Rows(k).EntireRow.Delete<br />
                                bDecide = <span style="color: #00007f">True</span><br />
                                <span style="color: #00007f">Exit</span> <span style="color: #00007f">Sub</span><br />
                            <span style="color: #00007f">End</span> <span style="color: #00007f">If</span><br />
                        <span style="color: #00007f">Next</span> k<br />
                    <span style="color: #00007f">End</span> <span style="color: #00007f">If</span><br />
                <span style="color: #00007f">End</span> <span style="color: #00007f">If</span><br />
            <span style="color: #00007f">Next</span> j<br />
        <span style="color: #00007f">Next</span> i</font></p>
<ul>
<li><strong><font color="#0000ff">记得清除垃圾</font></strong></li>
</ul>
<p>有时，需要在工作表中反复汇总或操作来自另一工作表或工作簿中的数据。记住，在将其他地方的数据复制到工作表中之前，记得清除以前的数据，避免产生重复数据或带来错误。</p>
<ul>
<li><strong><font color="#0000ff">积累通用代码，方便调用，提高开发效率</font></strong></li>
</ul>
<p>在我们编写程序的过程中，总有些代码适合于不同的程序开发。我们可以将这些程序代码做成通用程序，当需要时直接调用，从而节省时间，便于组织，提高了开发效率。这里，举几个例子。<br />
<font color="#0000ff">（1）判断某文件是否存在<br />
</font><font face="Courier"><span style="color: #007f00">&#8216;判断文件是否存在</span><br />
<span style="color: #00007f">Private</span> <span style="color: #00007f">Function</span> FileExists(fname) <span style="color: #00007f">As</span> <span style="color: #00007f">Boolean</span><br />
    <span style="color: #007f00">&#8216;如果存在则返回True</span><br />
    FileExists = (Dir(fname) &lt;&gt; &#8220;&#8221;)<br />
<span style="color: #00007f">End</span> <span style="color: #00007f">Function</span></font><br />
<font color="#0000ff">（2）判断工作表是否存在<br />
</font><font face="Courier"><span style="color: #007f00">&#8216;判断工作表是否存在</span><br />
<span style="color: #00007f">Private</span> <span style="color: #00007f">Function</span> SheetExists(sName) <span style="color: #00007f">As</span> <span style="color: #00007f">Boolean</span><br />
    <span style="color: #007f00">&#8216;如果当前工作簿中存在该工作表则返回True</span><br />
    <span style="color: #00007f">Dim</span> x <span style="color: #00007f">As</span> <span style="color: #00007f">Object</span><br />
    <span style="color: #00007f">On</span> <span style="color: #00007f">Error</span> <span style="color: #00007f">Resume</span> <span style="color: #00007f">Next</span><br />
    <span style="color: #00007f">Set</span> x = ActiveWorkbook.Sheets(sName)<br />
    <span style="color: #00007f">If</span> Err = 0 <span style="color: #00007f">Then</span><br />
        SheetExists = <span style="color: #00007f">True</span><br />
    <span style="color: #00007f">Else</span><br />
        SheetExists = <span style="color: #00007f">False</span><br />
    <span style="color: #00007f">End</span> <span style="color: #00007f">If</span><br />
<span style="color: #00007f">End</span> <span style="color: #00007f">Function</span><br />
</font><br />
<font color="#0000ff">（3）返回满足查找条件的所有单元格组成的区域</font><br />
<font face="Courier"><span style="color: #007f00">&#8216;通用的查找函数</span><br />
<span style="color: #00007f">Function</span> FindAll(SearchRange <span style="color: #00007f">As</span> Range, FindWhat <span style="color: #00007f">As</span> <span style="color: #00007f">Variant</span>, _<br />
    <span style="color: #00007f">Optional</span> LookIn <span style="color: #00007f">As</span> XlFindLookIn = xlValues, <span style="color: #00007f">Optional</span> LookAt <span style="color: #00007f">As</span> XlLookAt = xlWhole, _<br />
    <span style="color: #00007f">Optional</span> SearchOrder <span style="color: #00007f">As</span> XlSearchOrder = xlByRows, _<br />
    <span style="color: #00007f">Optional</span> MatchCase <span style="color: #00007f">As</span> <span style="color: #00007f">Boolean</span> = <span style="color: #00007f">False</span>) <span style="color: #00007f">As</span> Range<br />
<span style="color: #007f00">&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;</span><br />
<span style="color: #007f00">&#8216; 返回SearchRange区域中含有FindWhat所代表的值的所有单元格组成的Range对象</span><br />
<span style="color: #007f00">&#8216; 其参数与Find方法的参数相同</span><br />
<span style="color: #007f00">&#8216; 如果没有找到单元格,将返回Nothing.</span><br />
<span style="color: #007f00">&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;</span><br />
  <span style="color: #00007f">Dim</span> FoundCell <span style="color: #00007f">As</span> Range<br />
  <span style="color: #00007f">Dim</span> FoundCells <span style="color: #00007f">As</span> Range<br />
  <span style="color: #00007f">Dim</span> LastCell <span style="color: #00007f">As</span> Range<br />
  <span style="color: #00007f">Dim</span> FirstAddr <span style="color: #00007f">As</span> <span style="color: #00007f">String</span><br />
  <span style="color: #00007f">With</span> SearchRange<br />
    <span style="color: #00007f">Set</span> LastCell = .Cells(.Cells.Count)<br />
  <span style="color: #00007f">End</span> <span style="color: #00007f">With</span><br />
  <span style="color: #00007f">Set</span> FoundCell = SearchRange.Find(what:=FindWhat, after:=LastCell, _<br />
    LookIn:=LookIn, LookAt:=LookAt, SearchOrder:=Search<span style="color: #00007f">Or</span>der, MatchCase:=MatchCase)<br />
  <span style="color: #00007f">If</span> <span style="color: #00007f">Not</span> FoundCell <span style="color: #00007f">Is</span> <span style="color: #00007f">Nothing</span> <span style="color: #00007f">Then</span><br />
    <span style="color: #00007f">Set</span> FoundCells = FoundCell<br />
    FirstAddr = FoundCell.Address<br />
    <span style="color: #00007f">Do</span><br />
      <span style="color: #00007f">Set</span> FoundCells = Application.Union(FoundCells, FoundCell)<br />
      <span style="color: #00007f">Set</span> FoundCell = SearchRange.FindNext(after:=FoundCell)<br />
    <span style="color: #00007f">Loop</span> <span style="color: #00007f">Until</span> (FoundCell <span style="color: #00007f">Is</span> <span style="color: #00007f">Nothing</span>) Or (FoundCell.Address = FirstAddr)<br />
  <span style="color: #00007f">End</span> <span style="color: #00007f">If</span><br />
  <span style="color: #00007f">If</span> FoundCells <span style="color: #00007f">Is</span> <span style="color: #00007f">Nothing</span> <span style="color: #00007f">Then</span><br />
    <span style="color: #00007f">Set</span> FindAll = <span style="color: #00007f">Nothing</span><br />
  <span style="color: #00007f">Else</span><br />
    <span style="color: #00007f">Set</span> FindAll = FoundCells<br />
  <span style="color: #00007f">End</span> <span style="color: #00007f">If</span><br />
<span style="color: #00007f">End</span> <span style="color: #00007f">Function</span></font><br />
大家在平时可以积累这些程序，既方便学习，又可以重用。</p>
<a href="http://www.excelperfect.com/index.php?tag=excel" rel="tag">Excel</a>, <a href="http://www.excelperfect.com/index.php?tag=vba" rel="tag">VBA</a>, <a href="http://www.excelperfect.com/index.php?tag=%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91" rel="tag">应用程序开发</a><div class="aizattos_related_posts"><span class="aizattos_related_posts_header" >Related Posts</span><ul><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/12/14/introexcelapplyallcontent/" rel="bookmark" title="Permanent Link: 《Excel应用大全》双目录一览" >《Excel应用大全》双目录一览</a></span><div class="aizattos_related_posts_excerpt">在EH中已公布了《Excel应用大全》一书的目录，让我们先睹为快。
该书开创&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2008/01/17/excelsafe111111/" rel="bookmark" title="Permanent Link: Excel 发现安全漏洞 可远程安插恶意代码" >Excel 发现安全漏洞 可远程安插恶意代码</a></span><div class="aizattos_related_posts_excerpt">刚在CB上看到的一篇文章，辑录于此。
微软于周二发布了一个安全警告，称&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/09/01/excelservicesbookinfo/" rel="bookmark" title="Permanent Link: 关于Excel Services的图书信息" >关于Excel Services的图书信息</a></span><div class="aizattos_related_posts_excerpt">下面介绍两本由Excel Services团队编著的两本图书。文章参考：Microsoft Excel和Ex&#8230;</div></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/09/26/excel2007fileformat/" rel="bookmark" title="Permanent Link: Excel 2007中的新文件格式" >Excel 2007中的新文件格式</a></span></li><li><span class="aizattos_related_posts_title"><a href="http://www.excelperfect.com/2007/09/27/excel2007calcissue/" rel="bookmark" title="Permanent Link: Excel 2007中的计算问题" >Excel 2007中的计算问题</a></span></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.excelperfect.com/2008/07/31/excelappdevelop/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
