最新WPS办公软件学习教程_免费企业办公软件下载_金山WPS Office官网论坛

 找回密码
 
查看: 21489|回复: 53

[VBA/VBS教程] 【VBA For ET 教材连载系列】三

[复制链接]

397

主题

72

听众

3057

积分

测试体验团员

Rank: 14Rank: 14Rank: 14Rank: 14

该用户从未签到

金币
3
威望
5028
帖子
2011
精华
11

特殊贡献奖 最佳教程奖 活跃会员奖

发表于 2009-5-3 15:04 |显示全部楼层
分享到: 新浪微博 腾讯微博
  ET VBA是一种附属于ET的程序语言,而VBE则是开发程序的环境。VBE是软件,VBE是容器。. _; Q; |' `( _5 A$ i
      本节将带您认识VBE的环境,包括不同窗口及其作用。* J6 `2 z8 k9 o! l) Z4 p6 S8 z
        VBE界面中有很多很多种窗口,各有自己独特作用。本节将介绍窗口的分布及其作用。
: V, t0 C8 a$ g: {- r2 a3.1 进入VBE的方式
) P! b2 [3 ]- G3 H4 b* H        ET2009装好VBA后,可以通过两种方式打开VBE界面:, H9 `5 d0 j* f/ d# g
        1.1 快捷键法:【Alt+F11$ W$ S3 W  {: \7 h5 X$ T
        如果再次按下【Alt+F11】则可以关闭VBE窗口返回ET工作表
( t( u/ v2 u& Y  _        1.2 菜单法:单击菜单【工具】\\VB编辑器】即可
8 ^. _0 O6 ^2 q+ `# o; c+ H' }3.2 认识VBE组件
; F' ^$ D3 R# F9 @        VBE中有很多窗口及其它组件,对每个组件都需要有一定的认识并能合理的设置,才能在编写代码时得心应手。
. h$ O% d8 t. x& m8 q        VBE中组件主要包括:  n' e4 a# z6 J, Z
        * 菜单
( N& Z% u# m8 v3 h& I. ]        * 工具栏; X% W# `: _7 @6 t. q8 _
        * 工程资源管理器2 l. X& y  V3 O0 M
        * 代码窗口, ~3 {+ U& [( j" t
        *  属性窗口
8 l- ?' x/ k6 W; ]- h        * 工作表代码窗口1 X4 C1 U( j. ]4 ~8 r& O4 J
        * 模块代码窗口" ^" T; Q7 g8 I
        * 窗体
5 h% z9 y5 Z8 g/ ?: @        * 窗体代码窗口
* ?/ J" X1 l( E+ S9 _3 v        * 对象浏览器# C; c( J/ |- w* n' v
        * 立即窗口. a4 G& W+ H( f$ }9 p
        VBE中的所有组件无法同时出现,某些组件与组件之间是排斥关系。如组件A出现,那么组件B就会关闭或者隐藏,反之亦然。在图3.1中罗列了大部分组件。
) g/ ?% U; S" q/ G/ k                              . y6 S& r" I* k" x" J3 _
$ L# G2 o% v% B2 q+ _
7 T" p, W# E: Q) ^. k8 O3 U. z& G
3.1 VBE组

/ \' B: T' ~, H

7 H8 c: {6 P5 e1 `& h9 M: V" P3.2.1 菜单
) w: w5 S5 Y& e$ y7 S" W; y        VBE中的菜单栏包含了VBE中大部分功能。单击二级、三级菜单可以执行文件导出、导入、查找、删除、新建组件、设置格式、定义选项、加密码、代码调试、窗口切换、调用帮助等等功能。
& Q  d! k) {& `! X( I: i( v        另外还有一种快捷菜单,即右键菜单。右键在不同地方将产生不同菜单,例如代码窗口和在窗体上,在立即窗口所产生的右键菜单就大大不同。即使同在代码窗口,在不同的状态下,仍然会有不同的菜单,例如正常状态和中断状态下,代码窗口的右键菜单也不一样的。
+ w- x& A  c8 F) z/ a) V3.2.2工具栏
# {( D* |2 v. q; p+ ^' c        工具栏包含的功能在菜单中都有,不过工具栏的按钮在操作上比菜单栏方便、直观,所以工具栏在工作中使用率会高于菜单栏。2 n1 A$ n9 t9 \8 `2 `: f( B
        工具栏同样可以定制,创建或者删除工具栏都可以,在本书第28章将会讲述。
' k* u' ~$ K  Q9 ?- e9 z  T        工具栏中的按钮可以通过功能提示来查看名称及了解功能。只要将鼠标指针移向任何一个按钮,屏幕上将出现它的名称。图3.2即为“复制”按钮的功能提示。" A3 ?  f5 W$ w2 C$ `+ j

4 s" S' f! E+ K5 j
/ J& o- n) L- K3 \6 a5 H: m
3.2  工具栏提示
% b: t8 z8 L4 v2 g0 o
        工具栏包括四个工具条组成,如果某组件未显示,可以在工具栏或者菜单栏中单击右键,在需要显示的工具栏名称上单击使其打勾即可。图3.3中单击菜单【编辑】即可显示编辑工具栏。
( S6 P6 Y4 V3 E$ J- ~$ A8 s

" @  b5 G! h) v+ \3 W( ^" ]4 J
3.3 显示编辑栏

% d, r4 o% z* ^
4 m1 n5 A/ }9 G/ f# w2 A
3.2.3工程资源管理器
0 T. \) H% W7 m. ?        工程资源管理器用于显示VBA中的所有工程。当前打开多少个Et工作簿就有多少个工程。显示工程资源管理器的快捷键是【Ctrl+R】。
: n# E6 @" W) Q9 W: v- A7 J        工程资源理器是一个非常重要的组件,每次编写代码都需要通过它来管理,用户需要对它的功能与启动模式有深入地理解。图3.4是工程资源管理器的外观。
; ^2 Z9 h$ ~+ Y  M  A
( I; Q1 x. U; ]8 A
' ]+ X) c- {; _3 G+ D( K1 {  U
3.4 工程资源管理器

/ E; ~! Q3 M6 g; E; z
0 W) S( C& h  n+ `  I  E4 x3.2.4 代码窗
1 s# K% S2 V) `/ k& I        代码窗口包括包括工作表代码窗口、模块代码窗口、窗体代码窗口等等,快捷键【F7】。图3.5 是一个模块代码窗口,图3.6是一个工作表代码窗口。它们虽然都存放VBA代码,但作用上却大大不同,在以后的VBA事件章节将会详述。4 ]' t/ B8 h: J" ^

% ~+ v* j. Y) d

2 _& H5 n+ M* [, W
3.5 模块代码窗口
/ }5 b  |7 @4 z  H- p
# G- g) Q! x0 s- x( H' y8 F
3.6 工作表代码窗口
/ X/ e1 v8 z, z$ o! _8 q4 k
3.2.5 属性窗口1 X8 G$ t3 V4 n/ }5 v
        属性窗口用于设置窗体及窗体组件的属性,在设置用户窗体时,会频繁的使用属性窗口。属性窗口的显示快捷键为【F4】,观观大致如图6.7所示。
3 S( Z& P& s+ |9 t* R( ~
  ^# Z7 o5 I$ Y1 s
6 |1 k& V3 ]* g( f' E  ]
3.7 属性窗口

8 {# F" I, N4 N9 q* Q% m* Q

! I8 S% f* o5 _: u# s3.2.6 用户窗体
# Z9 G2 }$ G5 z1 O1 x( |        用户窗体主要用于开发带有界专业程序时用,当然更多时候用户拿它来设计帮助界面及做登录框。4 D" y3 {% {$ M; q- D# C
        3.8 即为笔者设计的简易登录框。, I# T% w2 h. ~% j* V6 z
; k! j3 e# w& I2 n

6 |2 b6 \! I3 |6 [' K
3.8 简易登录框
  L" b. W" r# e/ W: E- M" Y
        生成一个新窗体的步骤是:单击菜单【插入】\【窗体】。
0 O" F2 x1 g6 D# z' |3 N3 o8 ~3.2.7 对象浏览器
2 B: W0 v  u! A6 d! J4 k5 T        对象浏览器用于查看ET对象库以及过工程中的可用、属性、方法、事件及常数变量。您可以用它来搜索及使用既有的对象,或是来源于其他应用程序的对象
; a$ C* N& J" B, ?        打开对象浏览器的快捷键【F2】。
4 K# B% S$ o' [4 U1 V, B9 w) V+ {        3.9即为对象浏览器的外观。2 m( ?* c2 e: I" S( {/ v5 ]
( u, P! z' ^& f
  u, Q# v1 y% D7 {
3.9 对象浏览空器
$ g! a, R1 M) P6 M3 e. k6 N
3.2.8 立即窗口. @. p6 W& g9 J# A
        3.10即为立即窗口,调出立即窗口的快捷键是【Ctrl+G】。+ W# C3 F" ~" L4 J" F! Y
" j3 S; U7 {) }; ]! r; X( X, ^5 Z

: p1 W% u0 R. t# I
3.10 立即窗口
' _, u! j% ?3 x) e$ ^( u
3.3 不同窗口的作用
4 |; Y$ a& r# m$ M0 ~0 j! t3.3.1 工作表代码窗口& w) J3 e( E" O6 S* ~# r2 N
        工作表代码窗口用于存工作表事件代码。在窗口中的代码对当前工作表生效。/ g/ l" v; W& s- N4 o) t
        例如以下代码,进入工作表“sheet1”时报告当前工作簿的工作表数量。
! m" I2 D/ p! Q7 P) X; Q9 U        从工程资源管理空对空双击Sheet1打开工作表代码窗口,将代码写入:
7 ]. f: j0 g0 c1 C; `5 `: g————————————————————————————————————————
* c+ @- r1 X5 I1 Y8 b5 jPrivate Sub Worksheet_Activate()
0 t. q4 u+ ~' m6 [" U" UMsgBox "当前工作簿工作表个数:" & Sheets.Count
' Y$ b5 ^  u9 R; A) J+ e5 xEnd Sub
! ~- _% p) K+ Y$ c# j* o6 Q
————————————————————————————————————————: e, r' E$ d' B2 C6 B4 l
        当用户从工作表“Sheet2”切换到“Sheet1”时,将报告工作表数量,且只有在进入工作表“Sheet1”时能有可能产生提示。见图3.11所示。9 T% R& p  a- L" J! Z7 A$ W
1 x8 ?7 G9 J0 c0 X, ]* t8 r6 t
0 p! A, M/ S8 g( B  P
3.11 提示工作表数量
/ J+ A* l# ^! Y  ]! X, J
3.3.2 工作簿代码窗口
- E! E3 ?3 n  k9 r        从工程资源管理器双击Thisworkbook即进入工作簿代码窗口,此窗口中的代码用于整个工作簿所有工作表中,响应所有工作表事件,及Excel主程序的工作簿事件。( s7 x: \$ K) Z0 a3 }  c* b8 P, \6 o8 v
        例如:以下代码在任意工作表间切换时都会报告工作表数量
% Y( p% L0 l9 F        双击ThisWorkbook后输入以下代码
( }/ X" w+ U5 m- Y————————————————————————————————————————. y7 e+ u$ q7 |) U4 s8 v3 D
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
: ^9 G/ ^4 m2 wMsgBox "当前工作簿工作表个数:" & Sheets.Count
$ r- q* x& e7 ~End Sub8 ]3 r& L/ b7 A: d5 D
————————————————————————————————————————
6 i# |! t( y- y9 m3.3.3 窗体代码窗口
8 h! g9 F& S; {$ I: y& \        本窗口用于执行窗体中的事件,及控制窗体中的控件。
5 L4 |/ `3 J/ s4 y+ }        示例一:窗体激活时报当前工作簿的名称,在关闭时报告当前工作簿的路径。. L  L; V) j$ A( ^" s# ^- ?- s
        单击菜单【插入】\【窗体】插入一个窗体,然后双击窗体并输入以下代码:, H7 v! ^( d( S& U4 r. |5 @
————————————————————————————————————————) M/ J4 Q# }) t# {, s5 W
Private Sub UserForm_Activate()
- n: a0 W! R) \MsgBox ActiveWorkbook.Name
! |# @$ {- m1 [; ^! zEnd Sub, b9 p* D5 \8 O9 w
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)2 ]' \" ^7 A1 P' T$ i! z
MsgBox ActiveWorkbook.Path '注意如果工作簿未保存则不存在路径
( ~8 U; [; Q) X% O: {End Sub
3 V: Y2 g8 a' `' Z9 o0 \————————————————————————————————————————: G" _! I  @! X. I# [! N
        示例二:单击在窗体中的按钮时,报告文字框中的输入字符。  y6 d9 g  z; V. ~# a1 U9 W
        鼠标在工具箱中单击文字框,并在窗体中拖动即可绘出一个文字框,同样方式再添加一个命令按钮。然后双击按钮,删除自动产生的代码,重新再输入以下代码:* y. Q- N  Z# `2 g# Z) a' Z4 ~1 b1 E
————————————————————————————————————————" t! y% ^) `/ z- P  c% `
Private Sub CommandButton1_Click()
0 b$ @7 ]4 H: Y: o( `MsgBox Me.TextBox1.text& I/ `# t( a# @# m
End Sub
2 i' w; l$ H/ Q: W# u, o————————————————————————————————————————1 r9 L$ @% d* e7 l# S
        光标定位于代码中间,然后按下快捷键【F5】运行窗体,在文字框中输入“How are you?”,单击按钮时,程序将会报告输入的字符。见下图所示。
& a/ Z1 ]% Q. i6 W; ^0 i$ S- H& n

- w4 a+ `  R: u
3.12 工具箱
   
3.13 窗体代码执行结果

6 M, D- ]8 l' H( i- W3.3.4 立即窗口& J" k+ \6 K- B$ w
        这个窗口主要用于调试程序。立即窗口显示自代码中调试语句的信息,或直接键入窗口的命令所生成的信息。它的作用具体表示在:1 G' }9 j  I+ A, Z
        1.检测有问题的或新编写的代码。1 U% ~, T  K1 }" _( C. Q
        2.当执行应用程序时查询或改变变量的值。当应用程序中断时,将一个您所想的新值指定给程序中的变量。8 X3 R# A6 G2 E7 R, B
        3.当执行应用程序时查询或改变属性值。
7 M$ j- w) s0 l5 u1 ]+ n        4.在代码中调用如您所需的过程
+ S7 i1 y/ t1 ]7 {  e, e        实例一:调试代码,显示当前代码输出的信息,以检测代码的正确性。- Q- b) u) d& c& K. |0 J( [) y
        首先插入一个模块,在模块中输入以下代码:
+ t: ~& A& N1 x% B————————————————————————————————————————' X- o, v$ V8 b/ m9 h: g
Sub 工作簿全名()% w4 ?8 U* p) E
Debug.Print ActiveWorkbook.FullName, \6 Y8 f7 v! S: c
End Sub
4 O1 j( e* T5 v8 P1 y————————————————————————————————————————" v7 D( k# v. E- U  |
        然后使用快捷键【Ctrl+G】显示立即窗口,将光标置于代码中任意地方,按下【F5】键执行程序,立即窗口中将显示程序执行的结果:
- W+ _( b4 ?/ ]; R5 d
) [4 g6 m: R- s

' t2 W; E+ F$ f( w
3.14 用立即窗口显示调试信息

+ L% V. W) g/ D        实例二:在立即窗口执行程序,显示当前用户名。
, q  P% y8 k/ T# R1 h) L        在立即窗口输入以下代码:2 C% E2 \( h" c: B9 Q( l
————————————————————————————————————————& H) Z4 C3 e% h' [2 x
msgbox application.UserName
0 w$ p3 [9 m: E; P$ F————————————————————————————————————————
0 y' Z' a1 ?& }7 H9 i        然后在代码末尾单击回车键,程序立即显示结果:
- I1 x8 q9 V$ f; J3 o

2 U& P/ O/ r) Y$ ]# @
3.15 在立即窗口执行程序

1 \1 ?% K2 [/ N4 ]3 o9 `        下一节讲述VBE中选项的设置。, P0 u- f9 O; `, I  E+ ]* V

" D. I, b0 D& h" D! H[ 本帖最后由 罗刚君 于 2009-5-3 15:51 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,

已有 1 人评分威望 收起 理由
Gideon + 20 精品文章

总评分: 威望 + 20   查看全部评分

7

主题

0

听众

157

积分

LV.2

Rank: 2

该用户从未签到

金币
0
威望
157
帖子
39
精华
0
发表于 2009-5-4 16:32 |显示全部楼层
sf :victory: & K1 B( K7 X/ j, R6 R3 A6 w
初次接触,谢谢lz这么好的教程:)
回复

使用道具 举报

5

主题

0

听众

29

积分

LV.1

Rank: 1

该用户从未签到

金币
0
威望
16
帖子
11
精华
0
发表于 2009-5-7 12:27 |显示全部楼层
很好  还好懂VB  要不难了。。。。。
回复

使用道具 举报

3

主题

0

听众

93

积分

LV.1

Rank: 1

该用户从未签到

金币
0
威望
93
帖子
77
精华
0
发表于 2009-5-15 11:57 |显示全部楼层
不懂,觉得挺难。试着了解中。
回复

使用道具 举报

5

主题

0

听众

61

积分

LV.2

Rank: 2

该用户从未签到

金币
2
威望
151
帖子
24
精华
0
发表于 2009-6-9 16:54 |显示全部楼层
很详细,要用功了
回复

使用道具 举报

5

主题

0

听众

1842

积分

LV.8

Rank: 8Rank: 8

签到天数: 41 天

[LV.5]常住居民I

金币
347
威望
4997
帖子
488
精华
0
发表于 2010-1-9 13:02 |显示全部楼层
继续学习
回复

使用道具 举报

1

主题

0

听众

9

积分

LV.1

Rank: 1

该用户从未签到

金币
0
威望
6
帖子
0
精华
0
发表于 2010-3-7 20:58 |显示全部楼层
在哪里能找到VBA的中文版呀,找了好久找不到
回复

使用道具 举报

3

主题

0

听众

21

积分

LV.1

Rank: 1

该用户从未签到

金币
0
威望
8
帖子
11
精华
0
发表于 2010-5-5 16:22 |显示全部楼层
:L 晕晕的,只好慢慢学了:loveliness:
回复

使用道具 举报

0

主题

0

听众

4

积分

LV.1

Rank: 1

该用户从未签到

金币
0
威望
4
帖子
2
精华
0
发表于 2011-9-8 14:46 |显示全部楼层
EXCEL下编辑的VBA程序,不知能否直接在ET下使用?
回复

使用道具 举报

13

主题

9

听众

1459

积分

LV.7

Rank: 7Rank: 7Rank: 7

签到天数: 1 天

[LV.1]初来乍到

金币
456
威望
3277
帖子
721
精华
0
发表于 2012-11-23 11:07 |显示全部楼层
特兰克斯 发表于 2011-9-8 14:46 # O" \$ ?' T) S+ p
EXCEL下编辑的VBA程序,不知能否直接在ET下使用?

- z1 |3 Q  [3 u- e8 h不完全行,有些要做些语法上的调试
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 更多账号登录:

快速回帖:

fastpost

WPS论坛更新日志|WPS Office官方论坛     

GMT+8, 2017-11-25 09:45

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部