kisssy
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
阅读:1884回复:3

hanli0611 发的VBA常用代码的完整教程1

楼主#
更多 发布于:2004-04-18 15:48
<P><FONT size=3><B><FONT face=PMingLiU>VBA</FONT></B><B>的发展环境</B>(<FONT face=PMingLiU>The VBA Development Environment</FONT>)</FONT></P>
<P><FONT size=3><FONT face=PMingLiU>Visual Basic For Applications</FONT>(<FONT face=PMingLiU>VBA</FONT>)是最近几年发展得较好的技术之一,是微软<FONT face=PMingLiU>Microsoft</FONT>所发展的一种程序语言。如<FONT face=PMingLiU>ArcGIS</FONT>等开放组件模块的应用软件就可以用<FONT face=PMingLiU>VBA</FONT>作整合。你将在这本书的后段学习到更多组件模块的相关信息。尚有许多使用<FONT face=PMingLiU>VBA</FONT>的应用软件,如:<FONT face=PMingLiU>Microsoft</FONT>的<FONT face=PMingLiU>Word</FONT>和<FONT face=PMingLiU>Access</FONT>。<FONT face=PMingLiU>VBA</FONT>提供了这些以窗口为基础的产品在客制应用(应顾客要求修改部分功能)发展的标准化。<FONT face=PMingLiU>Visual Basic</FONT>是可学习的早期程序语言之一。<p></p></FONT></P>
<P><FONT size=3>使用<FONT face=PMingLiU>VBA</FONT>发展的应用软件常被称为宏(<FONT face=PMingLiU>macros</FONT>),你可以使用宏来自动化重复的工作或产制一个应用完整的应用软件。这些宏是以<FONT face=PMingLiU>VBA</FONT>为基础在应用软件中执行。如:你的<FONT face=PMingLiU>ArcMap</FONT>的宏在<FONT face=PMingLiU>ArcMap</FONT>这个应用软件中执行,而且在<FONT face=PMingLiU>ArcMap</FONT>的地图文件上执行。这个章节介绍<FONT face=PMingLiU>VBA</FONT>的发展环境,即<FONT face=PMingLiU>VBA</FONT>的编辑器。你可以使用<FONT face=PMingLiU>VBA</FONT>的编辑器来发展你要的宏。<FONT face=PMingLiU>VBA</FONT>的另一种用处是标准化较大型的应用软件。无论如何,记住<FONT face=PMingLiU>VBA</FONT>的程序代码可能不易转移至<FONT face=PMingLiU>VB</FONT>环境,尤其是使用窗体(<FONT face=PMingLiU>forms</FONT>)的情况下。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>●</FONT><a href="http://www.gcc.ntu.edu.tw/arcgis/ArcGIS%20Developer's%20Guide%20for%20VBA/VBA_Chap01/The_VBA_Development_Environment.htm" target="_blank" >开启与关闭<FONT face=PMingLiU>VBA</FONT>编辑器</A>(<FONT face=PMingLiU>Opening and Closing the VBA Editor</FONT>)</FONT></P>
<P><FONT size=3><FONT face=PMingLiU>VBA</FONT>的宏是跟<FONT face=PMingLiU>ArcGIS</FONT>的地图文件一起储存的,因此,要编辑<FONT face=PMingLiU>VBA</FONT>的宏需要先开启<FONT face=PMingLiU>ArcGIS</FONT>的地图文件,如<FONT face=PMingLiU>ArcMap</FONT>的地图文件。在<FONT face=PMingLiU>ArcMap</FONT>中开启一个新的或既存的地图文件,然后使用<FONT face=PMingLiU>VBA</FONT>编辑器来新增或编辑<FONT face=PMingLiU>VBA</FONT>的宏。要打开<FONT face=PMingLiU>VBA</FONT>编辑器,你可以选择<FONT face=PMingLiU>Tools</FONT>-<FONT face=PMingLiU>Macros</FONT>-<FONT face=PMingLiU>Visual Basic Editor</FONT>,也可以按下快速键〔<FONT face=PMingLiU>Alt</FONT>+<FONT face=PMingLiU>F11</FONT>〕,<FONT face=PMingLiU>VBA</FONT>编辑器将开启一个新的窗口,图<FONT face=PMingLiU>1-1</FONT>为在一个新的地图文件中开启<FONT face=PMingLiU>VBA</FONT>编辑器的画面。<p></p></FONT></P>
<P><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path connecttype="rect" gradientshapeok="t" extrusionok="f"></v:path><lock aspectratio="t" v:ext="edit"></lock></v:shapetype><v:shape><v:imagedata><FONT size=3></FONT></v:imagedata></v:shape></P>
<P><FONT size=3>图<FONT face=PMingLiU>1-1</FONT> <FONT face=PMingLiU>VBA</FONT>编辑器</FONT></P>
<P><FONT size=3>在<FONT face=PMingLiU>VBA</FONT>编辑器中项目浏览窗口(<FONT face=PMingLiU>Project Explorer window</FONT>)列出了宏的不同组件,在一个新的<FONT face=PMingLiU>ArcMap</FONT>的地图文件中,<FONT face=PMingLiU>VBA</FONT>编辑器可供选择一般样式(<FONT face=PMingLiU>Normal template</FONT>)和现行项目文件(<FONT face=PMingLiU>current project document</FONT>)。如果使用一般样式来编修宏,你所有的文件都可以使用一般样式。如果使用现行项目文件来编修宏,则只有那个文件可以使用它。<p></p></FONT></P>
<P><FONT size=3>你可以在属性窗口(<FONT face=PMingLiU>Properties window</FONT>)中观看并编辑某一对象的属性,在图<FONT face=PMingLiU>1-1</FONT>中,项目组件(<FONT face=PMingLiU>Project element</FONT>)在项目浏览窗口中处于选择中的状态(<FONT face=PMingLiU>highlighted</FONT>)。因此,该项目组件的属性就会显示在属性窗口中,在这个案例中,该项目组件只有一个属性-<FONT face=PMingLiU>Name</FONT>,你可以在属性窗口中更改这项属性的值。而实时窗口(<FONT face=PMingLiU>Immediate window</FONT>)在宏测试和除错时才会使用到。在这本书后面几章将会介绍这些窗口的使用方法。<p></p></FONT></P>
<P><FONT size=3>选择<FONT face=PMingLiU>File</FONT>-<FONT face=PMingLiU>Close</FONT>就可以关闭<FONT face=PMingLiU>VBA</FONT>编辑器并回到<FONT face=PMingLiU>ArcMap</FONT>,也可以按下快速键〔<FONT face=PMingLiU>Alt</FONT>+<FONT face=PMingLiU>Q</FONT>〕,或按下窗口右上角的关闭钮。当你在<FONT face=PMingLiU>ArcMap</FONT>窗口或<FONT face=PMingLiU>VBA</FONT>编辑器中储存<FONT face=PMingLiU>ArcMap</FONT>的地图文件,所以的编修(包括宏)都会被储存起来。因此,如果在储存宏前就关闭<FONT face=PMingLiU>VBA</FONT>编辑器,该宏也不会遗失,你可以在<FONT face=PMingLiU>ArcMap</FONT>窗口中储存它。当你离开<FONT face=PMingLiU>ArcMap</FONT>时,所有相关窗口(包括<FONT face=PMingLiU>VBA</FONT>编辑器)都会关闭。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>●</FONT><a href="http://www.gcc.ntu.edu.tw/arcgis/ArcGIS%20Developer's%20Guide%20for%20VBA/VBA_Chap01/The_VBA_Development_Environment.htm" target="_blank" ><FONT face=PMingLiU>VBA</FONT>编辑器的使用者接口</A>(<FONT face=PMingLiU>The VBA Editor User Interface</FONT>)<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>VBA</FONT>编辑器的使用者接口是由一个选单列、数个工具列和数个窗口所组成,你可以透过移动、隐藏或展示任一组件来更改这个使用者接口,图<FONT face=PMingLiU>1-2</FONT>显示选单列和标准工具列,你不能隐藏选单列但可以移动它。<p></p></FONT></P>
<P><v:shape><v:imagedata><FONT size=3></FONT></v:imagedata></v:shape></P>
<P><FONT size=3>图<FONT face=PMingLiU>1-2</FONT> <FONT face=PMingLiU>VBA</FONT>编辑器选单和工具列<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>VBA</FONT>编辑器提供了另外四个工具列,你可以藉由<FONT face=PMingLiU>VBA</FONT>编辑器的客制化对话盒(<FONT face=PMingLiU>Customize dialog box</FONT>)来展示或隐藏这些工具列,选择<FONT face=PMingLiU>View</FONT>-<FONT face=PMingLiU>Toolbars</FONT>-<FONT face=PMingLiU>Customize</FONT>以显示客制化对话盒,如图<FONT face=PMingLiU>1-3</FONT>,可勾选所需的工具列以显示出来。</FONT></P>
<P><v:shape><v:imagedata><FONT size=3></FONT></v:imagedata></v:shape></P>
<P><FONT size=3>图<FONT face=PMingLiU>1-3</FONT> <FONT face=PMingLiU>VBA</FONT>编辑器的客制化对话盒<p></p></FONT></P>
<P><FONT size=3>就如同其它窗口应用软件一样,<FONT face=PMingLiU>VBA</FONT>编辑器提供了选单选项的完整设定,大部分普遍会用到且重要的选单项目详述如下:<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>※</FONT>档案选单(<FONT face=PMingLiU>File Menu</FONT>)<p></p></FONT></P>
<P><FONT size=3>在档案选单中最常用到的是储存和关闭项目,用以储存地图文件和关闭编辑器。在选单选项中,输入档案(<FONT face=PMingLiU>Import File</FONT>)和输出档案(<FONT face=PMingLiU>Export File</FONT>)项目是值得注意的。无论所发展的宏程序代码是储存在一般样式或是现行文件中,该程序代码将无法在该地图文件或该样式之外取得。<p></p></FONT></P>
<P><FONT size=3>你可以选择<FONT face=PMingLiU>File</FONT>-<FONT face=PMingLiU>Export File</FONT>来储存宏,就是以纯文本文件格式储存在<FONT face=PMingLiU>ArcGIS</FONT>文件之外,该输出档案保留<FONT face=PMingLiU>VB</FONT>档案格式,可以用在其它<FONT face=PMingLiU>VB</FONT>的项目中。输出写好的宏也是一个备分且与其它人分享程序代码的好方法。相反地,你可以选择<FONT face=PMingLiU>File</FONT>-<FONT face=PMingLiU>Import File</FONT>输入<FONT face=PMingLiU>VB</FONT>档案到地图文件中。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>※</FONT>浏览选单(<FONT face=PMingLiU>View Menu</FONT>)<p></p></FONT></P>
<P><FONT size=3>使用浏览选单中的项目可以展示不同的<FONT face=PMingLiU>VBA</FONT>编辑器窗口,如:假如不小心关掉项目浏览窗口,可以选择<FONT face=PMingLiU>View</FONT>-<FONT face=PMingLiU>Project Explorer</FONT>再打开它。这个选单也可以选择切换<FONT face=PMingLiU>ArcMap</FONT>或<FONT face=PMingLiU>ArcCatalog</FONT>窗口。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>※</FONT>插入选单(<FONT face=PMingLiU>Insert Menu</FONT>)</FONT></P>
<P><FONT size=3>你可以使用插入选单中的项目来增加宏中的组件,如:你可以选择<FONT face=PMingLiU>Insert</FONT>-<FONT face=PMingLiU>User Form</FONT>把使用者窗体加入宏。</FONT></P>
<P><FONT size=3><FONT face=PMingLiU>※</FONT>除错与执行选单(<FONT face=PMingLiU>Debug and Run Menus</FONT>)<p></p></FONT></P>
<P><FONT size=3>在除错和执行选单中的项目可以让你针对宏执行、测试和除错,选择<FONT face=PMingLiU>Debug</FONT>-<FONT face=PMingLiU>Step</FONT>,就一个步骤一个步骤的进行宏除错,这是宏除错时很有效且通用的方法。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>●</FONT><a href="http://www.gcc.ntu.edu.tw/arcgis/ArcGIS%20Developer's%20Guide%20for%20VBA/VBA_Chap01/The_VBA_Development_Environment.htm" target="_blank" >使用<FONT face=PMingLiU>VBA</FONT>编辑器</A>(<FONT face=PMingLiU>Using the VBA Editor</FONT>)</FONT></P>
<P><FONT size=3>你可以在<FONT face=PMingLiU>VBA</FONT>编辑器的程序代码窗口中编修宏的程序代码,有很多方法可以开启程序代码窗口,如:<FONT face=PMingLiU>View</FONT>-<FONT face=PMingLiU>Code</FONT>。当你藉由插入选单的选项插入一个模块或类别模块时,新模块的程序代码窗口会自动开启。产生一个新宏并开启程序代码窗口的步骤如下:<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>1.</FONT>开启<FONT face=PMingLiU>ArcMap</FONT>,并按下<FONT face=PMingLiU>Alt</FONT>+<FONT face=PMingLiU>F11</FONT>开启<FONT face=PMingLiU>VBA</FONT>编辑器。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>2.</FONT>在<FONT face=PMingLiU>VBA</FONT>编辑器窗口中,选择<FONT face=PMingLiU>Tools</FONT>-<FONT face=PMingLiU>Macros</FONT>开启宏对话盒,如图<FONT face=PMingLiU>1-4</FONT>。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>3.</FONT>确定宏下拉式选单中所选的是目前的项目,然后在宏名称(<FONT face=PMingLiU>Macro Name</FONT>)文字盒中输入<FONT face=PMingLiU>MyMacro</FONT>。</FONT></P>
<P><FONT size=3><FONT face=PMingLiU>4.</FONT>按下<FONT face=PMingLiU>Create</FONT>钮以开启程序代码窗口,如图<FONT face=PMingLiU>1-5</FONT>。<p></p></FONT></P>
<P><v:shape><v:imagedata><FONT size=3></FONT></v:imagedata></v:shape></P>
<P><FONT size=3>图<FONT face=PMingLiU>1-4</FONT> <FONT face=PMingLiU>VBA</FONT>编辑器的宏对话盒<p></p></FONT></P>
<P><v:shape><v:imagedata><FONT size=3></FONT></v:imagedata></v:shape></P>
<P><FONT size=3>图<FONT face=PMingLiU>1-5</FONT> 程序代码窗口<p></p></FONT></P>
<P><FONT size=3>在图<FONT face=PMingLiU>1-5</FONT>中程序代码窗口会出现一个宏基本的架构,你所需要做的事就是写入程序代码,为宏加入一个讯息窗的程序代码如下:<p></p></FONT></P>
<P><FONT face=PMingLiU size=3>Sub MyMacro()</FONT>
<FONT face=PMingLiU size=3>  MsgBox ("Hello World!")</FONT>
<FONT face=PMingLiU size=3>End Sub</FONT></P>
<P><FONT size=3>选择<FONT face=PMingLiU>Run</FONT>-<FONT face=PMingLiU>Run Sub</FONT>来执行这个新的宏,结果就是出现一个写着<FONT face=PMingLiU>Hello World!</FONT>的讯息窗。在图<FONT face=PMingLiU>1-5</FONT>中,你可以看到一个名叫<FONT face=PMingLiU>Module1</FONT>的新组件加入了项目浏览窗口中,你刚刚产生的宏是<FONT face=PMingLiU>Module1</FONT>的一个程序(<FONT face=PMingLiU>procedure</FONT>),你可以在属性窗口中更改<FONT face=PMingLiU>Module1</FONT>的名称,改成一个更具意义的名字。一个模块(<FONT face=PMingLiU>Module</FONT>)中可以有一个以上的宏(<FONT face=PMingLiU>macro</FONT>),一个项目(<FONT face=PMingLiU>Project</FONT>)中也可以有很多模块。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>●</FONT><a href="http://www.gcc.ntu.edu.tw/arcgis/ArcGIS%20Developer's%20Guide%20for%20VBA/VBA_Chap01/The_VBA_Development_Environment.htm" target="_blank" >使用<FONT face=PMingLiU>VBA</FONT>编辑器制作使用者窗体</A>(<FONT face=PMingLiU>Creating User Forms in the VBA Editor</FONT>)</FONT></P>
<P><FONT size=3>使用者窗体提供了使用者接口相当丰富的功能,可以随意的加入宏中。虽然有许多固定的对话盒可用在宏中与使用者产生互动,复杂的宏或许就需要属于自己的客制窗体。你可以选择<FONT face=PMingLiU>Insert</FONT>-<FONT face=PMingLiU>User Form</FONT>来增加宏中的窗体。图<FONT face=PMingLiU>1-6</FONT>显示一个新增的使用者窗体。<p></p></FONT></P>
<P><v:shape><v:imagedata><FONT size=3></FONT></v:imagedata></v:shape></P>
<P><FONT size=3>图<FONT face=PMingLiU>1-6</FONT> 新的使用者窗体<p></p></FONT></P>
<P><FONT size=3>在图<FONT face=PMingLiU>1-6</FONT>中,新的使用者窗体叫做<FONT face=PMingLiU>UserForm1</FONT>,它同时也被加入项目浏览窗口中,你可以在属性窗口更改窗体名称。你也可以藉由工具对话盒增加窗体中的使用者接口控制,选择<FONT face=PMingLiU>View</FONT>-<FONT face=PMingLiU>Toolbox</FONT>就可以开启工具对话盒。在窗体中增加一个文字盒与命令钮的步骤如下,然后你就可以加入一些程序代码,让使用者一按下窗体中的命令钮就在文字盒中显示目前的日期和时间。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>1.</FONT>开启<FONT face=PMingLiU>ArcMap</FONT>并打开<FONT face=PMingLiU>VBA</FONT>编辑器。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>2.</FONT>在项目浏览窗口中选择目前的项目文件,别选一般模式(<FONT face=PMingLiU>Normal template</FONT>)。</FONT></P>
<P><FONT size=3><FONT face=PMingLiU>3.</FONT>选择<FONT face=PMingLiU>Insert</FONT>-<FONT face=PMingLiU>User Form</FONT>在目前的项目文件中插入一个新的窗体。</FONT></P>
<P><FONT size=3><FONT face=PMingLiU>4.</FONT>如果工具对话盒(<FONT face=PMingLiU>Toolbox dialog</FONT>)是隐藏状态,选择<FONT face=PMingLiU>View</FONT>-<FONT face=PMingLiU>Toolbox</FONT>就可以开启它。在工具对话盒中选择命令钮这项工具,如果你不甚熟悉各个工具钮,把鼠标移至该工具上就会显示出它的名称。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>5.</FONT>当命令钮这项工具选好后,在窗体上按一下以增加一个命令钮。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>6.</FONT>在工具对话盒中选择文字盒(<FONT face=PMingLiU>Text Box</FONT>)工具,在窗体上按一下以放置一个文字盒。<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>7.</FONT>透过拖曳和更改大小来排列使用者接口控制,而窗体将如图<FONT face=PMingLiU>1-7</FONT>所示。<p></p></FONT></P>
<P><v:shape><v:imagedata><FONT size=3></FONT></v:imagedata></v:shape></P>
<P><FONT size=3>图<FONT face=PMingLiU>1-7</FONT> 使用者接口控制<p></p></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>8.</FONT>增加显示日期和时间的程序代码。在<FONT face=PMingLiU>CommandButton1</FONT>上按鼠标右键,并选择<FONT face=PMingLiU>View Code</FONT>的选项,将开启程序代码窗口如下:<p></p></FONT></P>
<P><FONT face=PMingLiU size=3>Private Sub CommandButton1_Click()</FONT>
<FONT face=PMingLiU><FONT size=3>End Sub<p></p></FONT></FONT></P>
<P><FONT size=3><FONT face=PMingLiU>9.</FONT>增加<FONT face=PMingLiU>Me.TextBox1.Text = Now()</FONT>这串程序代码,程序代码窗口将含有下列程序:</FONT></P>
<P><FONT face=PMingLiU size=3>Private Sub CommandButton1_Click()</FONT>
<FONT face=PMingLiU size=3>  Me.TextBox1.Text = Now()</FONT>
<FONT face=PMingLiU size=3>End Sub</FONT></P>
<P><FONT size=3><FONT face=PMingLiU>10.</FONT>当你的光标在<FONT face=PMingLiU>CommandButton1_Click()</FONT>的程序中,选择<FONT face=PMingLiU>Run</FONT>-<FONT face=PMingLiU>Run Sub</FONT>/<FONT face=PMingLiU>UserForm</FONT>来测试你的窗体,该使用者窗体就会显示出来,当你按下窗体上的命令钮,就会在文字盒中看到现在的日期和时间,按下窗体右上角的关闭钮就可以关掉窗体。</FONT></P>
<P><FONT size=3>你可以透过选择<FONT face=PMingLiU>Tool</FONT>-<FONT face=PMingLiU>Macros</FONT>-<FONT face=PMingLiU>Macros</FONT>直接在<FONT face=PMingLiU>ArcMap</FONT>窗口中直接执行宏,然而,使用者窗体不会出现在宏选单中,因此,你不能直接在<FONT face=PMingLiU>ArcMap</FONT>窗口中直接执行使用者窗体。你需要一个宏以显示你的使用者窗体,用前述方法产生一个新的宏,并增加下列程序代码以显示你的使用者窗体。<p></p></FONT></P>
<P><FONT face=PMingLiU size=3>UserForm1.Show</FONT></P>
<P><FONT size=3>在这一章中,你学会如何使用<FONT face=PMingLiU>VBA</FONT>编辑器来产生新的宏,这些宏是用<FONT face=PMingLiU>VBA</FONT>语言所写成的,在后面几章你将会学到更多<FONT face=PMingLiU>VBA</FONT>程序写法。</FONT></P>
喜欢0 评分0
个人专栏: https://zhuanlan.zhihu.com/c_165676639
游客

返回顶部