<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>简单生活 -- Kevin Yang的博客 &#187; 自定义函数</title>
	<atom:link href="http://www.imkevinyang.com/tags/%e8%87%aa%e5%ae%9a%e4%b9%89%e5%87%bd%e6%95%b0/feed" rel="self" type="application/rss+xml" />
	<link>http://www.imkevinyang.com</link>
	<description>It&#039;s all about sharing</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:37:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Excel中使用VBA自定义函数对字符串进行Url编码（UTF-8）</title>
		<link>http://www.imkevinyang.com/2009/04/excel%e4%b8%ad%e4%bd%bf%e7%94%a8vba%e8%87%aa%e5%ae%9a%e4%b9%89%e5%87%bd%e6%95%b0%e5%af%b9%e5%ad%97%e7%ac%a6%e4%b8%b2%e7%bb%a7%e7%bb%adurl%e7%bc%96%e7%a0%81.html</link>
		<comments>http://www.imkevinyang.com/2009/04/excel%e4%b8%ad%e4%bd%bf%e7%94%a8vba%e8%87%aa%e5%ae%9a%e4%b9%89%e5%87%bd%e6%95%b0%e5%af%b9%e5%ad%97%e7%ac%a6%e4%b8%b2%e7%bb%a7%e7%bb%adurl%e7%bc%96%e7%a0%81.html#comments</comments>
		<pubDate>Mon, 27 Apr 2009 18:09:58 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[代码库]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[UrlEncode]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[中文编码]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[工具技巧]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[编解码]]></category>
		<category><![CDATA[自定义函数]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/04/excel%e4%b8%ad%e4%bd%bf%e7%94%a8vba%e8%87%aa%e5%ae%9a%e4%b9%89%e5%87%bd%e6%95%b0%e5%af%b9%e5%ad%97%e7%ac%a6%e4%b8%b2%e7%bb%a7%e7%bb%adurl%e7%bc%96%e7%a0%81.html</guid>
		<description><![CDATA[<p>Excel是个非常强大的工具，工作中因为需要用到他老完成一些表格数据的处理，所以抽空学了一点小技巧。</p>
<p>VBA是Visual Basic Application的全称，我们在Office的产品家族里面会经常看到它的身影。甚至SQL Server里头也有它的足迹，善于使用这些VBA函数或者自定义一些函数能够帮我&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Excel是个非常强大的工具，工作中因为需要用到他老完成一些表格数据的处理，所以抽空学了一点小技巧。</p>
<p>VBA是Visual Basic Application的全称，我们在Office的产品家族里面会经常看到它的身影。甚至SQL Server里头也有它的足迹，善于使用这些VBA函数或者自定义一些函数能够帮我们实现一些看似很强大的功能而又不用花费太大的精力。</p>
<p><strong>步骤一. 打开Excel 2007中的Visual Basic编辑器</strong></p>
<p>在Excel 2007中的开发工具菜单下，点击Visual Basic，即可弹出Visual Basic的编辑界面。默认情况下，这个开发工具在功能区是不显示的，需要在Excel设置中勾选上，如下图。</p>
<p><img style="border-right-width: 0px; margin: 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/04/image-thumb5.png" width="654" height="172" /></p>
<p><img style="border-right-width: 0px; margin: 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/04/image-thumb6.png" width="408" height="202" /> </p>
<p><img style="border-right-width: 0px; margin: 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/04/image-thumb7.png" width="482" height="581" /> </p>
<p><strong>步骤二. 编写自定义函数</strong></p>
<p>选择菜单-&gt;插入-&gt;模块，就会弹出一个编辑窗口，在其中输入下面代码，即可定义一个UrlEncode的函数。</p>
<pre class="csharpcode"><span class="kwrd">Public</span> <span class="kwrd">Function</span> UrlEncode(<span class="kwrd">ByRef</span> szString <span class="kwrd">As</span> <span class="kwrd">String</span>) <span class="kwrd">As</span> <span class="kwrd">String</span>
       <span class="kwrd">Dim</span> szChar   <span class="kwrd">As</span> <span class="kwrd">String</span>
       <span class="kwrd">Dim</span> szTemp   <span class="kwrd">As</span> <span class="kwrd">String</span>
       <span class="kwrd">Dim</span> szCode   <span class="kwrd">As</span> <span class="kwrd">String</span>
       <span class="kwrd">Dim</span> szHex    <span class="kwrd">As</span> <span class="kwrd">String</span>
       <span class="kwrd">Dim</span> szBin    <span class="kwrd">As</span> <span class="kwrd">String</span>
       <span class="kwrd">Dim</span> iCount1  <span class="kwrd">As</span> <span class="kwrd">Integer</span>
       <span class="kwrd">Dim</span> iCount2  <span class="kwrd">As</span> <span class="kwrd">Integer</span>
       <span class="kwrd">Dim</span> iStrLen1 <span class="kwrd">As</span> <span class="kwrd">Integer</span>
       <span class="kwrd">Dim</span> iStrLen2 <span class="kwrd">As</span> <span class="kwrd">Integer</span>
       <span class="kwrd">Dim</span> lResult  <span class="kwrd">As</span> <span class="kwrd">Long</span>
       <span class="kwrd">Dim</span> lAscVal  <span class="kwrd">As</span> <span class="kwrd">Long</span>
       szString = Trim$(szString)
       iStrLen1 = Len(szString)
       <span class="kwrd">For</span> iCount1 = 1 <span class="kwrd">To</span> iStrLen1
           szChar = Mid$(szString, iCount1, 1)
           lAscVal = AscW(szChar)
           <span class="kwrd">If</span> lAscVal &gt;= &amp;H0 <span class="kwrd">And</span> lAscVal &lt;= &amp;HFF <span class="kwrd">Then</span>
              <span class="kwrd">If</span> (lAscVal &gt;= &amp;H30 <span class="kwrd">And</span> lAscVal &lt;= &amp;H39) <span class="kwrd">Or</span> _
                 (lAscVal &gt;= &amp;H41 <span class="kwrd">And</span> lAscVal &lt;= &amp;H5A) <span class="kwrd">Or</span> _
                 (lAscVal &gt;= &amp;H61 <span class="kwrd">And</span> lAscVal &lt;= &amp;H7A) <span class="kwrd">Then</span>
                 szCode = szCode &amp; szChar
              <span class="kwrd">Else</span>

                 szCode = szCode &amp; <span class="str">&quot;%&quot;</span> &amp; Hex(AscW(szChar))
              <span class="kwrd">End</span> <span class="kwrd">If</span>
           <span class="kwrd">Else</span>
              szHex = Hex(AscW(szChar))
              iStrLen2 = Len(szHex)
              <span class="kwrd">For</span> iCount2 = 1 <span class="kwrd">To</span> iStrLen2
                  szChar = Mid$(szHex, iCount2, 1)
                  <span class="kwrd">Select</span> <span class="kwrd">Case</span> szChar
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;0&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;0000&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;1&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;0001&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;2&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;0010&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;3&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;0011&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;4&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;0100&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;5&quot;</span>
                        szBin = szBin &amp; <span class="str">&quot;0101&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;6&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;0110&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;7&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;0111&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;8&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;1000&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;9&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;1001&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;A&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;1010&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;B&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;1011&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;C&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;1100&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;D&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;1101&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;E&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;1110&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Is</span> = <span class="str">&quot;F&quot;</span>
                              szBin = szBin &amp; <span class="str">&quot;1111&quot;</span>
                         <span class="kwrd">Case</span> <span class="kwrd">Else</span>
                  <span class="kwrd">End</span> <span class="kwrd">Select</span>
              <span class="kwrd">Next</span> iCount2
              szTemp = <span class="str">&quot;1110&quot;</span> &amp; Left$(szBin, 4) &amp; <span class="str">&quot;10&quot;</span> &amp; Mid$(szBin, 5, 6) &amp; <span class="str">&quot;10&quot;</span> &amp; Right$(szBin, 6)
              <span class="kwrd">For</span> iCount2 = 1 <span class="kwrd">To</span> 24
                  <span class="kwrd">If</span> Mid$(szTemp, iCount2, 1) = <span class="str">&quot;1&quot;</span> <span class="kwrd">Then</span>
                     lResult = lResult + 1 * 2 ^ (24 - iCount2)
                  <span class="kwrd">Else</span>: lResult = lResult + 0 * 2 ^ (24 - iCount2)
                  <span class="kwrd">End</span> <span class="kwrd">If</span>
              <span class="kwrd">Next</span> iCount2
              szTemp = Hex(lResult)
                    szCode = szCode &amp; <span class="str">&quot;%&quot;</span> &amp; Left$(szTemp, 2) &amp; <span class="str">&quot;%&quot;</span> &amp; Mid$(szTemp, 3, 2) &amp; <span class="str">&quot;%&quot;</span> &amp; Right$(szTemp, 2)
           <span class="kwrd">End</span> <span class="kwrd">If</span>
           szBin = vbNullString
           lResult = 0
       <span class="kwrd">Next</span> iCount1
       UrlEncode = szCode
<span class="kwrd">End</span> Function</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
</p>
</p>
<p><strong>步骤三：测试</strong></p>
<p>定义完之后，我们选择菜单-&gt;文件-&gt;关闭并返回Excel。然后我们就可以在Excel中测试刚才定义的这个函数了。如下图所示。</p>
<p><img style="border-right-width: 0px; margin: 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/05/image-thumb.png" width="342" height="28" /></p>
<p>注意，使用了VBA函数的excel文件需要在打开时启用宏，否则函数无效。</p>

	标签：<a href="http://www.imkevinyang.com/tags/excel" title="Excel" rel="tag">Excel</a>, <a href="http://www.imkevinyang.com/tags/office" title="Office" rel="tag">Office</a>, <a href="http://www.imkevinyang.com/tags/urlencode" title="UrlEncode" rel="tag">UrlEncode</a>, <a href="http://www.imkevinyang.com/tags/utf-8" title="UTF-8" rel="tag">UTF-8</a>, <a href="http://www.imkevinyang.com/tags/vba" title="VBA" rel="tag">VBA</a>, <a href="http://www.imkevinyang.com/tags/%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81" title="中文编码" rel="tag">中文编码</a>, <a href="http://www.imkevinyang.com/categories/techarticles/codebase" title="代码库" rel="tag">代码库</a>, <a href="http://www.imkevinyang.com/tags/%e5%87%bd%e6%95%b0" title="函数" rel="tag">函数</a>, <a href="http://www.imkevinyang.com/tags/toolskills" title="工具技巧" rel="tag">工具技巧</a>, <a href="http://www.imkevinyang.com/tags/%e6%8a%80%e5%b7%a7" title="技巧" rel="tag">技巧</a>, <a href="http://www.imkevinyang.com/tags/%e7%bc%96%e8%a7%a3%e7%a0%81" title="编解码" rel="tag">编解码</a>, <a href="http://www.imkevinyang.com/tags/%e8%87%aa%e5%ae%9a%e4%b9%89%e5%87%bd%e6%95%b0" title="自定义函数" rel="tag">自定义函数</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/11/asp-net%e9%a1%b5%e9%9d%a2%e7%9a%84%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98.html" title="Asp.Net页面的编码问题 (2009/11/27)">Asp.Net页面的编码问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/04/javascript%e5%ad%97%e7%ac%a6%e4%b8%b2%e5%93%88%e5%b8%8c%e5%87%bd%e6%95%b0.html" title="Javascript字符串哈希函数 (2009/04/11)">Javascript字符串哈希函数</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/11/onenote-2010-beta2-%e4%bd%93%e9%aa%8c.html" title="OneNote 2010 beta2 体验 (2009/11/25)">OneNote 2010 beta2 体验</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/05/php%e5%a4%84%e7%90%86bom%e6%a0%87%e8%ae%b0%e7%9a%84utf-8%e6%96%87%e4%bb%b6%e5%af%bc%e8%87%b4%e7%9a%84%e9%97%ae%e9%a2%98.html" title="PHP处理BOM标记的UTF-8文件导致的问题 (2009/05/05)">PHP处理BOM标记的UTF-8文件导致的问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/02/word%e7%bc%96%e8%be%91%e5%8c%ba%e9%bc%a0%e6%a0%87%e5%a4%b1%e6%95%88.html" title="Word编辑区鼠标失效 (2009/02/28)">Word编辑区鼠标失效</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/05/%e4%bd%bf%e7%94%a8vba%e5%87%bd%e6%95%b0%e5%9c%a8excel%e5%8d%95%e5%85%83%e6%a0%bc%e4%b8%ad%e7%94%9f%e6%88%90%e6%8b%bc%e9%9f%b3%e7%bc%a9%e5%86%99.html" title="使用VBA函数在Excel单元格中生成拼音缩写 (2009/05/15)">使用VBA函数在Excel单元格中生成拼音缩写</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/06/%e5%85%b3%e4%ba%8e%e5%ad%97%e7%ac%a6%e7%bc%96%e7%a0%81%ef%bc%8c%e4%bd%a0%e6%89%80%e9%9c%80%e8%a6%81%e7%9f%a5%e9%81%93%e7%9a%84.html" title="关于字符编码，你所需要知道的（ASCII,Unicode,Utf-8,GB2312&#8230;） (2010/06/18)">关于字符编码，你所需要知道的（ASCII,Unicode,Utf-8,GB2312&#8230;）</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/02/%e5%ad%97%e7%ac%a6%e7%bc%96%e8%a7%a3%e7%a0%81%e7%9a%84%e6%95%85%e4%ba%8b%ef%bc%88ascii%ef%bc%8cansi%ef%bc%8cunicode%ef%bc%8cutf-8%e5%8c%ba%e5%88%ab%ef%bc%89.html" title="字符编解码的故事（ASCII，ANSI，Unicode，Utf-8区别） (2009/02/28)">字符编解码的故事（ASCII，ANSI，Unicode，Utf-8区别）</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/08/%e6%96%87%e6%a1%a3%e5%ad%97%e7%ac%a6%e9%9b%86%e5%af%bc%e8%87%b4%e7%9a%84%e8%84%9a%e6%9c%ac%e9%94%99%e8%af%af.html" title="文档字符集导致的脚本错误 (2009/08/19)">文档字符集导致的脚本错误</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/08/%e8%af%a6%e8%a7%a3javascript%e4%b8%ad%e7%9a%84url%e7%bc%96%e8%a7%a3%e7%a0%81.html" title="详解Javascript中的Url编码/解码 (2009/08/19)">详解Javascript中的Url编码/解码</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/04/excel%e4%b8%ad%e4%bd%bf%e7%94%a8vba%e8%87%aa%e5%ae%9a%e4%b9%89%e5%87%bd%e6%95%b0%e5%af%b9%e5%ad%97%e7%ac%a6%e4%b8%b2%e7%bb%a7%e7%bb%adurl%e7%bc%96%e7%a0%81.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: www.imkevinyang.com @ 2012-02-09 10:46:09 -->
