编程代码大全黑客vba(编程代码大全 黑客)

http://www.itjxue.com  2023-03-16 01:14  来源:未知  点击次数: 

用vba清除格式,怎么写

在写VBA代码的时候,经常会用到清零。所谓清零就是清空数据。为什么要清空数据呢?目的就是马上要有新的数据填充进来,以免新填入的数据错误。如果你是VBA的新手,务必要养成这个习惯,当有新的数据填充时,在此前要将旧的数据清空,切记切记。

在实际的代码书写中,会用到各式各样的方法进行数据的清空。下面就各个程序中的源代码拿来和大家分享。由于是源代码,只是截取了其中的部分,没有涉及到其他的操作,代码可能不能运行,如果要测试需要放在实际的代码环境中。

代码一:

20 Dim ws As Worksheet

21 Dim wb As Workbook

22 Set wb = ThisWorkbook '指定工作簿

23 Set ws = wb.Sheets("TT") '指定工作表名称

24 HANG = "a2:P3000"

25 ws.Range(HANG).Clear

代码讲解:首先设定行单元格的范围,然后CLEAR.

代码二

20 Dim ws As Worksheet

21 Dim wb As Workbook

22 Set wb = ThisWorkbook '指定工作簿

23 Set ws = wb.Sheets("TT") '指定工作表名称

24 HANG = "a2:P3000"

25 ws.Range(HANG). ClearContents

代码讲解: 首先设定行单元格的范围,然后ClearContents

代码三:

10 Sheets("TT").Selecct

11 Rows("3:200").Select

12 Selection.Delete

代码讲解:对固定的行数进行选择,然后统统删除,一了百了。

代码四:

10 Dim ws As Worksheet

11 Dim wb As Workbook

12 Set wb = ThisWorkbook '指定工作簿

13 Set ws = wb.Sheets("cz") '指定工作表名称

14 n = ws.Range("A65536").End(xlUp).Row

15 If n 3 Then

16 HANG = "2:" n

17 wb.Sheets("cz").Rows(HANG).ClearContents

18 End If

代码讲解:首先判断非空的行数,然后再ClearContents

代码五:

11 Sheets("TT").Selecct

12 Range("A2:j3000").Clear

代码讲解:直接对已知的区域进行CLEAR

上面分别讲了五种常见代码的写法,这五种方法其实也有相同之处。不再多说,这里再给大家讲解的是如下几点:

1 首先要判断是对已知固定区域的清空还是非固定区域的清空。如果是已知的固定区域,直接就写清区域范围即可;如果是非固定区域,那么就要判断这个区域的范围了,可以参考上面的代码四。

2 清空的方法,无外乎三种,delete——很直接、干净、彻底地删除一切数据,不拖泥带水;clear——清除所选择范围内的数据及格式;ClearContents——清除所选择范围内的数据。

3 如果是删除行,要判断确实删除的资料对于要录入的资料没有不良的影响。不要误删除。同时,如果采用的是循环语句,删除后的行数变化要考虑到。

4 判断要删除或者清除的区域时,可以先判断一下需要录入的数据量多大,如果是小于3000行,那么就直接录入3000,可以避免再次的判断,节约时间。

5 在清零处理的时候也要考虑到程序的可视性,增加select语句。

上述的几点在写程序时要特别的注意。

今日内容回向:

1.VBA清空的代码中核心步骤有两个,哪两个?

2.delete clear 有什么不同?clear 和clear Contents有什么不同?

3.delete 可以用clear代替吗?反过来呢?

分享成果,随喜正能量

629阅读

搜索

初学编程100个代码

excel十大必背函数

黑客编程全套教程

装逼代码大全100个

100套excel vba模板

vb2010excel编程实例

excel vba常用代码

Visual Basic for Applications(简称VBA)是新一代标准宏语言,是基于Visual Basic for Windows 发展而来的。它与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。而VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA 易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA 程序代码。这样用户可以容易地将日常工作转换为VBA 程序代码,使工作自动化。?[1]

数据类型

基本数据类型

即Primary Type Data,下述列表的括号内为字节数:

Byte?(1):无符号数类型,取值范围0-255

Boolean?(2)

Integer(2)

Long?(4)

Single?(4)

Double?(8)

Currency?(8)

Decimal?(14)

Date?(8)

String

Object?(4)

Variant?(根据分配确定)?[2]

自定义的数据类型

相当于C语言的struct,例如:?[2]

Type 自定义类型名 元素名 As 类型 … [元素名 As 类型] End Type

数组

Option Base 0 :数组索引值从0开始?[2]

Option Base 1 :数组索引值从1开始

Dim MyArray(10) :声明一个数组变量,10是最大的可用的数组索引值

MyArray(5) = 101 :给数组的元素赋值

Dim Data(10,5) :声明一个二维数组变量

Data(1,1) = "A001" :给数组元素赋值

Dim cArr(-11 To 20, 1 To 3) As String :声明一个数组,定义数组索引值的上下界

Dim dArr() As String :声明动态数组

ReDim dArr(0 To 5, 1 To 2) :改变动态数组的尺寸默认把原数据清除。如果保留原来的数据,必须加上参数

Preserve:使用Preserve参数时只能改变最后一位的大小

If UBound(vTemp) = -1 Then:判断数组变量vTemp是否为空数组

End If Erase MyArrar, Data Erase语句清除数组元素,释放变量占用的空间?[2]

常量

编辑

系统定义常量

系统定义常量有3个:True、False和Null。?[4]

固有常量

固有常量是编程时引用的对象库定义的常量。所有固有常量都可以在宏或VBA代码中使用。通常,固有常量通过前两个字母来指明定义该常量。来自VB库的常量则以“vb”开头。来自Access的常量以“ac”开头。可以使用对象浏览器来查看所有对象库中的固有常量列表。?[4]

在VBA中,常量的数据类型有整型、长整型、单精度型、双精度型、字节型、货币型、字符型、日期型和逻辑型。一个整型数据就是一个整型常量,一个长整型数据就是一个长整型常量。例如,12%、-1%是整型常量,32768、10000000是长整型常量,-2.5 1、3.14是单精度实型常量,3.1415926#是双精度实型常量,China、Shanghai是字符型常量,#07/13/2001 11:45PM#是日期常量,由符号 “ # ” 将字符括起来。?[4]

符号常量

可以自行定义的常量即符号常量,必须先定义,后使用。可见,需要声明的常量都是符号常量。?[4]

基本语法格式:

1? ?[?Publicr/?Private]?Const??常量名[As??类型]=表达式? ?

如:Global Const?符号常量名称 = 常量值?[4]

语句功能:

定义一个符号常量,并将指定表达式的值赋给符号常量。?[4]

语句说明如下:?[4]

1)“常量名”指定符号常量的名字。符号常量名可以由字母、数字和下画线组成,但只能以字母开头,不能含有空格。?[4]

2)“表达式”指定符号常量的值。该表达式通常由数值型、字符型、逻辑型或日期型数据以及各种运算符组成,但在表达式中不能出现变量和函数。?[4]

3) public用来表示这个常量的作用范围是整个数据库的所有模块。?[4]

4) private则表示这个常量只在使用该声明常量语句的模块中起作用。?[4]

说明:

1)除用户定义的符号常量外,VBA还提供了许多符号常量,我们可以直接使用。?[4]

2)对数码比较长,并且在程序中多次使用的常量,通常使用符号常量代替。运行程序时,系统自动把程序中的所有符号常量换为赋给它的值。?[4]

变量

编辑

与常量一样,变量也是一块内存空间,用于保存程序运行过程中可能变化的数据。变量的名称是用户定义的一个标识符。?[5]

在代码中需要使用该变量时,只需引用相应的标识符即可,而不用管变量当前的值具体是什么。?[5]

声明

与用户自定义的常量相似,变量在使用之前都需要声明,在VBA中声明变量的语法格式有以下几种:?[5]

关键字变量名 AS?数据类型

关键字变量1,变量2 ... 变量n AS?数据类型

关键字变量1 AS?数据类型,变量2 As?数据类型, ... ,变量n AS数据类型

在第二种语法格式中, “变量n”的数据类型为AS关键字后定义的数据类型,而“变量1”、“变量2”、…的数据类型为变体型。?[5]

在VBA中,可用Dim、Private、Public和Static这4个关键字来声明变量,使用不同关键字声明的变量其含义也有所不同。?[5]

◆ 利用Dim关键字声明变量:Dim关键字主要用来在内存中分配一块空间,并为该空间命名,是VBA中声明变量最常用的关键字。使用Dim关键字声明的变量只能在当前过程或模块中使用。?[5]

◆ 利用Private关键字声明变量:Private关键字用于在类模块中声明一个私有变量,它只能在当前的类模块中使用。当定义变量的位置同处于类模块中时,其使用效果与使用Dim关键字定义的变量相同。?[5]

◆ 利用Public关键字声明变量:利用Public关键字声明的变量可以在程序的任何地方调用,而与声明变量的位置无关。?[5]

◆ 利用Static关键字声明变量:Static关键字用于声明静态变量,即变量的值在整个代码运行期间都能被保留。?[5]

赋值

变量在使用时还需要对其进行赋值。在VBA中对变量进行赋值可通过 “ = ” 符号或 “ Set ” 关键字进行。通过 “ = ” 符号对变量赋值的语法格式有以下几种。?[5]

变量名=数据

变量1=变量2 运算符 数据

变量1=变量2 运算符 变量3 … 运算符 变量n

如果在定义变量时指定了变量的数据类型,则为变量所赋的值也必须是该数据类型的值。如果变量定义为Integer类型,而在赋值时却给了变量一个String类型的数据,则在编译运行的过程中将弹出错误弹框。?[5]

运算符

编辑

运算符是在程序中执行计算功能的某些特殊符号,它是程序代码的重要组成部分。在程序代码中,运算符不能单独使用,必须与其操作数共同组成表达式后才具有运算意义。VBA中的运算符包含算术运算符、连接运算符、比较运算符和逻辑运算符等。?[4]

算术运算符

算术运算符主要用于执行四则运算,仅用算术运算符连接起来的表达式称为算术表达式。算术运算符及其作用与示例如表所示。?[5]

例子

名称

结果

-$a

? ?

取反

? ?

$a 的负值。

? ?

$a + $b

? ?

加法

? ?

$a 和 $b 的和。

? ?

$a - $b

? ?

减法

? ?

$a 和 $b 的差。

? ?

$a * $b

? ?

乘法

? ?

$a 和 $b 的积。

? ?

$a / $b

? ?

除法

? ?

$a 除以 $b 的商,允许小数。

? ?

$a \ $b ? ?除法 ? ?$a 除以 $b 的商,结果取整。 ?

$a Mod $b

? ?

取余

? ?

$a 除以 $b 的余数

? ?

注意:

在执行算术运算时,运算符两侧操作的数据类型必须相同,否则会出现“类型不匹配”的错误提示。当“+”运算符左右两侧都是字符串类型的操作数时,执行的是连接运算,如表达式“"Pass+"word"的计算结果为字符串“ PassWord ”。?[5]

连接运算符

连接运算符的作用是将运算符两侧的操作数连接成一个数,其操作数的数据类型通常都为String类型。VBA中的连接运算符有“”和“+”两种,由于使用“+”执行连接运算时,容易与加法运算混淆,所以通常都采用“”进行连接运算。?[5]

比较运算符

比较运算符可以对运算符两侧的操作数执行比较运算,其返回结果为Boolean类型的True或False。比较运算符的操作数通常为具体的数值,当操作数为字符串或其他符号时,是根据该符号的ASCII码进行比较的。VBA中的比较运算符及其作用与示例如表所示。?[5]

例子

名称

结果

$a = $b

? ?

等于

? ?

TRUE,如果 $a 等于 $b。

? ?

$a $b

? ?

不等

? ?

TRUE,如果 $a 不等于 $b。

? ?

$a $b

? ?

小于

? ?

TRUE,如果 $a 严格小于 $b。

? ?

$a $b

? ?

大于

? ?

TRUE,如果 $a 严格大于 $b。

? ?

$a = $b

? ?

小于等于

? ?

TRUE,如果 $a 小于或者等于 $b。

? ?

$a = $b

? ?

大于等于

? ?

TRUE,如果 $a 大于或者等于 $b。

? ?

逻辑运算符

逻辑运算符用于对运算符两侧的操作数执行逻辑运算,参与逻辑运算的操作数本身可以是逻辑表达式(表达式的最终结果为True或 False),也可以是算术表达式(表达式的最终返回值为0或非0)。?[5]

在逻辑运算中,数值0与逻辑值 False相同,表示逻辑假;非0数值与True相同,表示逻辑真。逻辑运算符及其含义与示例如表所示。?[5]

例子

名称

结果

$a and $b

? ?

And(逻辑与)

? ?

TRUE,如果 $a 与 $b 都为TRUE。

? ?

$a or $b

? ?

Or(逻辑或)

? ?

TRUE,如果 $a 或 $b 任一为TRUE。

? ?

$a xor $b

? ?

Xor(逻辑异或)

? ?

TRUE,如果 $a 或 $b 同位相异。

? ?

Not(12)

? ?

Not(逻辑非)

? ?

TRUE。

? ?

(12) Eqv (12)

? ?

两个操作数同为假,返回False;两个操作数同为真,返回True;两个操作数一真一假,返回False

? ?

TRUE。

? ?

21 Imp 35

? ?

运算符左右同为真,返回True;左右同为假,返回True;左真右假,回返 False;左假右真,返回True

? ?

TRUE。

? ?

语法结构

编辑

if 语句

1? ?if?条件1?then???语句1elseif?条件2?then???语句2elseif?...????...else???语句nend?if? ?

Select Case 语句

1? ?Select?Case?表达式???Case?表达式列表1???????语句1???Case?表达式列表2???????语句2???????...???Case?表达式列表n???????语句nEnd?Select?? ?

其中的表达式列表可以为:?[5]

表达式?例: "A"

用逗号分隔的一组枚举表达式例:2,4,6,8

表达式1 To?表达式2 例:60 To 100

Is?关系运算符表达式 例:Is 60

Do...Loop 语句

1? ?Do?While或Until?条件???语句块1???Exit?Do???语句块2Loop? ?

For...Next语句

1? ?Do???语句块1???Exit?Do???语句块2Loop?While或Until?条件? ?

For Each … Next语句

1? ?For?循环控制变量=初值To?终值Step?步长???语句块?‘Exit?For语句可以跳出循环体Next? ?

跳出本次循环的continue语句

1? ?For?循环控制变量=初值?To?终值?Step?步长????Do?'用于模拟continue????????语句块?????????If?条件?Then?Exit?Do?'用于模拟continue????????语句块?????Loop?While?False?'用于模拟continue?Next? ?

With语句

1? ?With?对象引用???语句块End?With? ?

On Error语句

1? ?On?Error?Goto?出错处理语句的label?'跳转到出错处理语句? ?

1? ?On?Error?Resume?Next?'遇到错误,不管错误,继续往下执行? ?

具有控制作用的函数

If(条件式,表达式1,表达式2)?[5]

Switch(条件式1,表达式1,[条件式2,表达式2[,...,条件式n,表达式n]])

Choose(索引式,选项1[,选项2,...[,选项n]]) '这是基于1的索引

其他语句

编辑

注释语句

使用REM或者单引号开始的行。?[6]

语句的连写与续行

如果一行包括多条语句,用冒号分割各个语句。跨多行的语句,在行末用“空格加下划线”表示续行?[6]??。

过程与函数

编辑

12? ?Sub?过程名(参数表)????语句块????Exit?Sub????语句块End?Sub??? ?

1? ?Function?函数名(参数表)?As?Type???语句块???函数名=表达式???Exit?FunctionEnd?Function? ?

可以是Private、Public、Friend、Static等修饰。?[6]

调用函数/过程时,可以加括号或者不加括号。如果调用表达式作为一行的一部分,那么必须用参数,例如函数调用的返回值赋给变量。 调用过程时, 可以使用/不使用call关键字。使用call语句调用过程,如果无参数,则不加括号;如果有参数,必须加括号。如果调用时用括号包住单个参数,则该参数强行按值传递。需要特别注意,不用call不加括号的调用,形参与实参是传值(passed by value)而不是传引用(passed by reference),这会导致一些对象的方法调用失败。例如:?[6]

1? ?Dim?cn?As?ADODB.Connection????Set?cn?=?CurrentProject.Connection????Dim?rs?As?New?ADODB.Recordset????????rs.Open?"SELECT?*?FROM?myTable"?,?cn????Dim?ExcelApp?As?New?Excel.Application????Dim?ExcelWst?As?Worksheet????Set?ExcelWst?=?ExcelApp.Workbooks.Add.Worksheets(1)????ExcelWst.Range("A2").CopyFromRecordset(rs)?'失败,无法执行该行????ExcelWst.Range("A2").CopyFromRecordset?rs??'可成功执行该行? ?

常用内置函数

编辑

VBA的常用内置函数:?[5]

MsgBox

InputBox

舍入函数:Fix 向0取整,Int向下取整, Round四舍五入

Rnd: 返回0-1内的单精度随机数

字符串函数:?[5]

Filter:对字符串的一维数组的过滤

InStr([Start, ]Str1,Str2[, Compare])与InStrRev: 查找子串

Len:字符串长度

Join:连接一维数组中的所有子字符串

Left,Right,Mid: 截取子字符串

Space(数值) :生成空格字符串

Ucase,Lcase:大小写转换函数

Ltrim, Rtrim,Trim :删除首尾空格

Replace

Split:分割一个字符串成为一维数组

StrComp:字符串比较

StrConv:字符串转换

String(number, character):制定字符重复若干次

StrReverse

日期/时间有关函数:?[5]

Year, Month, Day, WeekDay,Hour,Minute,Second: 截取日期时间分量

DateAdd: 日期/时间增量函数

DateDiff(间隔类型,日期1,日期2[,W1][,W2])日期/时间的距离函数

DatePart(分割类型,日期[,w1][,w2])时间分割函数

DateSerial(表达式1,表达式2,表达式3) 合成日期;DateValue(“字符串表达式”)返回日期;

Date,Time,Now,Timer: 返回日期时间

DateValue

TimeSerial:由时间序列得到时间对象

TimeValue:由时间字符串得到时间对象

Weekday:获得日期的周几

WeekdayName

转换函数:CBool、CByte、CCur、?CDate、 CDbl、CDec、CInt、?CLng、CLngLng、CLngPtr、?[5]??CSng、CStr、CVar、CVErr、Asc(字符串表达式)返回第一个字符的Ascii编码值、Chr(ASCII码)返回字符、Hex、Oct、Str(数值表达式)返回字符串、Val(string)、Format、FormatCurrency、FormatDateTime、FormatNumber、FormatPercent、MonthName。

Nz(表达式或字段属性值[,规定值])如果是空,则返回0或者""或者函数的第二个参数值?[5]

验证函数:isNumeric、isDate、isNull、isEmpty、IsArray、IsError、IsMissing、IsObject?[5]

数学函数:Abs、Sqr、Tan、Atn(即atan)、Sin、Cos、Exp(e为基的指数)、Log自然对数?[5]

Array:构造一个Array对象?[5]

CallByName: get or set a property, or invoke a method at run time using a string name.?[5]

控制流:Choose:类似于C语言的select语句、If相当于IF-ELSE语句、Switch?[5]

Command:获取命令行参数?[5]

CreateObject:创建ActiveX对象

CurDir:返回指定驱动器的当前工作路径?[5]

由基本数学函数导出的函数:Sec、Cosec、Cotangent、Cotan、Arcsin、Arccos、Arcsec、Arccosec、Arccotan、HSin、HCos、HTan、HSec、HCosec、HCotan、HArcsin、HArccos、HArctan、HArcsec、HArccosec、HArccotan、LogN

DoEvents:暂时把CPU控制权交回给系统?[5]

Environ:返回环境变量的值?[5]

文件操作:?[5]

Dir:返回满足条件的所有文件、目录的名字

EOF

FileAttr

FileDateTime

FileLen

FreeFile Function

GetAttr:返回文件、目录的属性值

Input:读取文件

Loc:文件指针位置

LOF:文件打开时的指针位置

Seek:文件指针定位

Spc:使用Print做position output

Tab:用于Print函数

Error:错误号对应的错误消息?[5]

Windows Registry中的数据:GetAllSettings、SaveSetting、DeleteSetting、GetSetting?[5]

GetObject:ActiveX组建的引用?[5]

IMEStatus:返回当前Input Method Editor (IME)?[5]

Macintosh平台:MacID、MacScript?[5]

金融函数:?[5]

DDB:使用double-declining balance计算贬值

FV:计算固定利率的年金

IPmt:计算利率

IRR:计算利率

MIRR:计算利率

NPer:计算周期数

NPV:计算net present value

Pmt:计算支付数

PPmt:计算本金支付数

PV:计算present value

Rate:利息率

SLN:straight-line depreciation

SYD:计算sum-of-years' digits depreciation

Partition:返回字符串,表示一个数值名字落在各个range内。常用于SQL select语句?[5]

QBColor:颜色值?[5]

RGB:颜色值?[5]

TypeName:得到变量的类型名?[5]

VarType:得到变量的类型数?[5]

VBA代码是什么????????

VBA开发实用指南

唐大中 附录文章

VBA(Visual Basic for Application)是Office自带的二次开发工具,可为日常办公带来极大的便利。本文讲述Office各个成员VBA开发的常用对象和其相关的属性、方法和事件(包括Word、Excel、PowerPoint等),并给出相关的实例代码。

一、VBA基础

1.什么是VBA

在Office对于一些烦琐、重复的操作,用户可以通过“宏”来实现。“宏”即是由一系列命令和指令组合而成的命令集,其本质是VBA代码组成的程序。VBA是微软在其开发的应用程序中共享的通用自动化语言。

2.录制/运行宏

VBA初期开发可通过录制“宏”的操作来获取代码,在Office中几乎所有的操作均可通过录制“宏”来获取代码。这里,我们通过一个简单的“宏”录制实例来学习:在Word中将所有的“电脑”字样替换为“计算机”,并插入一张4行2列的表格。

在Office中录制宏,可单击“工具→宏→录制新宏…”菜单命令实现,单击该命令后将出现“录制宏”对话框,如图1所示。

其中,“宏名”框用于为录制的宏设置名称,可使用默认的“Macro1”。“工具栏”和“键盘”二个按钮分别用于设置宏的触发位置。“将宏保存在”框可设置宏的保存位置,一般包括“Normal.dot”(共用模板)和当前文档2种,建议保存在当前文档中,以免对所有文档产生影响。在“说明”框中可输入对该宏的相关说明。单击“确定”按钮,即可开始录制宏。此时在文档编辑界面中将显示“宏录制”工具栏。该工具栏有2个与录音机非常类似的按钮,第一个按钮为“停止录制”,第二个按钮为“暂停录制”。在录制过程中可随时通过这二个按钮来进行控制。

随后按常规操作来实现前述的任务,操作完成后单击“停止录制”按钮,结束录制即可。

注意:录制“宏”时可使用鼠标单击菜单和按钮,但无法录制鼠标在文档窗口中的移动,因此必须通过键盘来实现这些动作。此外,Office中所有录制的“宏”,其名称的首字符必须为字母或汉字、数字及下划线(名称最多可为255个字符),且“宏”名称中不允许包含空格。

运行已录制的“宏”,可单击“工具→宏→宏”菜单命令。在出现的“宏”对话框的“宏名”下拉框中选择需运行的宏,然后单击“运行”按钮即可。随后Word将自动重现前述执行的操作,避免了重复的办公操作。

3.宏的局限性

虽然Office的大部分操作均可用录制“宏”的方法来保存,但录制的“宏”仅“忠实”地再现了特定的操作,对于一些需要进行逻辑判断和流程控制的操作,则显得力不从心,如自动替换多个不同的内容时,按录制“宏”的方式操作,需要按替换内容的数量录制多个“宏”,且每个“宏”仅可用于某个内容的替换,反而为工作增添了麻烦。

录制“宏”存在很多局限性,除无法进行逻辑判断和流程控制操作外,还包括很多。如交互能力较差、无法显示Office的内置对话框、无法显示用户自定义的窗体和无法创建复杂的工具栏或修改菜单等。

4.VBA编辑环境

虽然“宏”存在很多局限性,但通过录制“宏”获取了VBA代码后即可通过VBA编辑器来为代码添加逻辑控制并设计流程等。以Word 2002为例,“宏”录制完成后,可在运行宏对话框中选择录制的宏并单击“编辑”按钮,即可显示VBA编辑环境,如图2所示。

VBA编辑环境由工程资源管理器、属性窗口和代码编辑/窗体设计窗口等部分组成。在工程资源管理器中列出当前打开的所有VBA项目,属性窗口用于设置相关对象的属性,代码编辑/窗体设计窗口则可输入模块的代码或编辑窗体和类模块。

二、VBA开发共用对象详解

VBA和其他面向对象的开发语言类似,同样有非常多的对象组成,且不同的Office成员即提供了大量的开发对象,如工具栏、Office助手、内置对话框和窗体等。

(一)工具栏及其控件对象

在Office中通过VBA开发工具栏和菜单,需使用Office提供的CommandBar、CommandBarButton、CommandBarComboBox等对象,这些对象即代表工具栏、工具栏按钮和工具栏下拉框,通过这些对象可编制出各类复杂的工具栏或菜单。

1.CommandBars集合

该集合代表Office所有的工具栏,可用名称或索引号指定菜单栏或工具栏,但仅可用名称指定一个菜单、快捷菜单或子菜单。如两个或两个以上自定义菜单或子菜单名称相同,则返回第一个具有该名称的对象。

其Add方法用于新建一个工具栏,并返回 CommandBar对象。

语法:expression.Add(Name, Position, MenuBar, Temporary)

参数说明:

Name为可选的Variant 类型,代表新工具栏的名称。如果省略,则使用默认的名称;Position为可选的Variant 类型,代表新工具栏的位置。该参数值可通过VBA常量进行设置,如msoBarLeft、msoBarTop、msoBarRight、msoBarBottom常量(设置新工具栏位于软件工具栏中位置);msoBarFloating常量(代表新工具栏可移动);msoBarPopup常量(代表新工具栏为快捷菜单)等;MenuBar为可选的Variant 类型,用于设置是否用新工具栏替换活动工具栏;Temporary为可选的Variant 类型,用于设置新工具栏是否暂时有效。

2.CommandBar对象

该对象代表应用程序中的工具栏,新建工具栏的控件均以该对象为载体。

(1)Controls属性:返回CommandBarControls对象,代表指定工具栏中的所有控件。

(2)NameLocal属性:返回由应用程序版本语言所设置的工具栏名称,如对软件的内置工具栏设置会出现错误。

(3)Position属性:返回或设置工具栏的位置,值可通过VBA常量进行设置,如msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPopup或msoBarMenu等。

(4)Type属性:返回或设置工具栏的类型,值可通过VBA常量进行设置,如msoBarTypeNormal(工具栏为普通类型)、msoBarTypeMenuBar(工具栏为菜单类型)、msoBarTypePopup(工具栏为弹出菜单类型)等。

(5)Reset方法:将内置工具栏重置为默认设置,在恢复软件原有工具栏或菜单时非常有用。重置内置工具栏将删除其中的自定义控件并恢复其内置控件。

3.CommandBarControls集合

该集合代表工具栏中的所有工具栏控件。

其Add方法用于在CommandBarControls集合中增加一个工具栏控件。

4.CommandBarControl对象

该对象代表工具栏控件,对自定义工具栏控件,可使用 CommandBarButton、CommandBarComboBox和CommandBarPopup对象进行定义,而对软件内置的控件进行操作,而该控件又无法使用上述三个对象表示,则可使用CommandBarControl对象。

(1)BeginGroup属性:用于设置工具栏控件是否分组显示。

(2)Caption属性:用于设置工具栏控件的标题文字,并可作为默认的控件屏幕提示。

(3)Id属性:用于设置CommandBarButton、CommandBarComboBox和CommandBarControl对象的功能,这些控件可直接设置为内置工具栏控件的ID,这样该控件即具备了软件内置的相应功能,自定义控件的ID属性均需设置为1。

(4)Copy方法:将工具栏控件复制到已有的工具栏中。

语法:expression.Copy(Bar, Before)

参数说明:

Bar为可选的Variant 类型,代表目标工具栏,如果省略,则控件将复制到自身所在的工具栏;Before为可选的Variant 类型,代表新控件在指定工具栏的位置,即新控件将添加至该位置的控件前,如果省略,则控件将复制到工具栏的末尾。

(5)Type属性:返回工具栏控件的类型,可通过VBA常量进行引用,常用的工具栏控件类型如下表所示:

常量名称

含义

msoControlButton

控制按钮

msoControlButtonDropdown

带下拉列表的按钮

msoControlButtonPopup

带弹出菜单的按钮

msoControlComboBox

下拉组合控制框

msoControlDropdown

下拉列表控制框

msoControlEdit

文本框

msoControlExpandingGrid

可扩展的表格

msoControlGraphicCombo

图像下拉组合框

msoControlGraphicDropdown

图像下拉列表框

msoControlGrid

表格

msoControlPopup

弹出菜单

5.CommandBarButton对象

该对象代表工具栏的按钮控件。

(1)OnAction属性:返回或设置Visual Basic代码过程名(该代码过程不可使用参数),该过程将在单击按钮后运行。

(2)Style属性:返回或设置工具栏按钮的显示方式。值可通过VBA常量进行设置,常用的工具栏按钮控件类型如下表所示:

常量名称

含义

msoButtonIcon

包含图标的按钮

msoButtonCaption

包含标题的按钮

ButtonIconandCaption

包含图标和标题的按钮

msoButtonIconAndCaptionBelow

包含图标和标题,且标题位于底部的按钮

msoButtonIconAndWrapCaption

包含图标和标题,且标题自动换行的按钮

msoButtonWrapCaption

包含标题,且标题自动换行的按钮

(3)TooltipText属性:返回或设置工具栏按钮控件的屏幕提示。

(4)FaceId属性:返回或设置工具栏按钮的图标编号,设置工具栏按钮的外观而非其功能,自定义图标的工具栏按钮,其 FaceId属性值为 0。

(5)CopyFace方法:将工具栏按钮控件的图标复制到剪贴板。

(6)PasteFace方法:将剪贴板的图标内容粘贴至工具栏按钮控件。

(7)Execute方法:运行工具栏控件对应的过程或内置命令。

6.CommandBarComboBox对象

该对象代表工具栏中的组合框控件。

(1)DropDownLines属性:返回或设置组合框控件的行数,如将其设置为 0,则控件行数将取决于列表的条目数。

(2)List属性:返回或设置组合框控件中某列表项的值,对内置组合框控件只读。

(3)OnAction属性:返回或设置Visual Basic代码过程名(该代码过程不可使用参数),该过程在单击或更改组合框控件值时运行。

(4)Type属性:返回或设置组合框控件的显示方式。

(5)AddItem方法:用于在组合框控件中添加一个列表项,且该组合框控件必须为自定义的控件。

(6)RemoveItem方法:用于从组合框控件中删除一个列表项。

(二)助手对象

Office助手是一组卡通动画人物,这些助手可提供友好的信息提示,并可通过自定义对话框(又称“气球”)的文字格式和控件来实现简单的交互。

1.Assistant对象

该对象代表Office助手,可通过Application对象的Assistant属性返回Assistant对象。默认助手为“大眼夹”(即“Clippit”),用户可在右键单击助手后出现的快捷菜单中单击“选择助手”菜单项,在弹出的“Office助手”对话框中即可选择不同的助手。

(1)Animation属性:用于返回或设置Office 助手的动画效果。如应用于 Balloon对象,则“助手”仅在显示气球时才会出现动作,可通过常量赋值,常用的常量及其含义如下表所示:

常量名称

代表的动作

msoAnimationAppear

助手出现

msoAnimationBeginSpeaking

助手开始说话

msoAnimationCheckingSomething

助手检查动作

msoAnimationDisappear

助手消失

msoAnimationGoodbye

助手说“再见”

msoAnimationGreeting

助手致欢迎的动作

msoAnimationIdle

助手休息的动作(为默认动画效果类型)

msoAnimationPrinting

助手打印的动作

msoAnimationSaving

助手保存的动作

msoAnimationSearching

助手开始查找的动作

msoAnimationThinking

助手考虑的动作

(2)AssistWithAlerts属性:用于设置助手气球是否发送给应用程序警告信息。

(3)AssistWithHelp属性:用于设置当用户按F1键显示帮助时助手是否出现。

(4)AssistWithWizards属性:用于设置助手是否提供向导型的联机帮助。

(5)FeatureTips属性:用于设置助手是否更有效地提供有关应用程序功能信息。

(6)GuessHelp属性:用于设置助手是否显示帮助主题列表。

(7)FileName属性:用于设置助手所使用的文件名,助手文件的扩展名为“acs”,一般位于Office的安装目录下。其中“孙悟空”为mnkyking.acs;“大眼夹”为Clippit.acs;“恋恋”为OffCat.acs;“聪聪”为Rocky.acs;“七巧板”为Logo.acs;“小灵通”Dot.acs;“美丽家园”为MNature.acs;“F1”为F1.acs。

(8)NewBalloon属性:用于新建助手气球,并返回Balloon对象。

(9)On属性:用于设置是否使用助手。

(10)Sounds属性:用于设置助手是否发出与动画对应的声音。

(11)TipOfDay属性:用于设置每次启动Office时,助手是否显示专用的提示。

2.Balloon对象

该对象代表气球,助手可在该气球中显示标题、文字和一些控件,通过NewBalloon属性可返回Balloon对象,且任意时刻仅有一个气球可视。

(1)BalloonType属性:用于设置助手所用的气球类型,可通过常量赋值。创建Balloon对象时,初始值为msoBalloonTypeButtons常量。

(2)Button属性:用于设置助手气球底部按钮类型。创建Balloon对象时,初始值为msoButtonSetOK。

(3)Icon属性:用于设置助手气球左上角的图标类型,可通过常量赋值。

(4)Checkboxes属性:返回BalloonCheckboxes集合,即气球中的所有复选框。

(5)Heading属性:用于设置助手气球中的标题。气球标题和文本均支持包含下划线和系统调色板16色的文字。

如需显示包含下划线的文字,可通过“{ul}”、“{ul 1}”语法来开始下划线和“{ul 0}” 语法来清除下划线;如需改变文字颜色,可通过“{cf number}”语法,其中number常数为系统调色板支持的16种颜色。

(6)Labels属性:返回BalloonLabels 集合,即气球中的所有标签。

(7)Mode属性:用于设置气球的模态,即是否在显示气球的同时允许用户在程序中继续工作。

(8)Text属性:用于设置助手在气球标签、复选框或直接显示部分的文字。

(9)Close方法:用于关闭活动的非模态气球,仅在回调过程中才可使用。

(10)Show方法:用于显示指定的气球对象。

3.BalloonCheckBox对象

该对象代表气球中的复选框控件。

Checked属性:返回是否已选择气球中的指定复选框。

(三)内置对话框对象

Office使用了大量的内置对话框,在Word和Excel中提供了开发接口,使开发者可充分利用内置对话框实现很多操作,尤其在Word中可使用多种方法显示内置对话框,实现不同的功能需求,这里,我们以Word的内置对话框为例进行讲解。

1.Dialogs集合对象

该集合对象代表Word或Excel中的Dialog对象集合,其中每个Dialog对象均代表一个内置对话框,无法在Dialogs集合中创建新的内置对话框,也无法添加对话框。

2.Dialog对象

该对象代表内置对话框。

(1)CommandName属性:用于返回显示指定内置对话框对应的过程名。

(2)DefaultTab属性:用于设置显示指定对话框时,其被激活的选项卡。

(3)Display方法:用于显示指定的内置对话框,并直至用户关闭该对话框或超时,使用显示内置对话框时,不会执行任何操作(即仅用于显示),但可返回用户关闭对话框时所单击的按钮代号。

其中,返回-2,代表“关闭”按钮;返回-1,代表“确定”按钮;返回0,代表“取消”按钮;返回大于 0的值,则1代表第一个按钮,2代表第二个按钮,以此类推。

(4)Execute方法:用于应用内置对话框的当前设置。

(5)Show方法:用于显示并执行内置对话框,即如同用户通过菜单或工具栏打开对话框,和Display方法相同,均返回用户关闭对话框时所单击的按钮代号。

(6)Update方法:用于更新内置对话框的参数值。

3.显示内置对话框

通过VBA代码可控制内置对话框的显示,如需调用指定的内置对话框,可将Dialogs属性通过常量进行赋值,如“Dialogs(wdDialogFileOpen).Show”可显示Word的“打开”对话框。在前述代码中,如将该语句的返回值赋予Dialog变量,即可通过该变量返回或设置对话框的选项,代码如下所示:

Set testDialog = Dialogs(wdDialogFileOpen)

合理使用内置对话框可实现很多的功能,Word和Excel中提供接口的内置对话框非常多,限于篇幅,本文不做详细介绍,读者可参考VBA的联机帮助。

(四)窗体和相关控件对象

VBA的编辑器和VB非常类似,因此也提供了窗体和相关的控件,但又由于Office的特点使VBA中的窗体、控件和VB存在一些差异。

1.用户窗体知识点

窗体是程序实现和用户交互的接口,通过窗体不仅可改善程序的界面友好性,而且可进一步增强、完善程序的功能。在VBA编辑器中可创建用户窗体,在工程资源管理器中右键单击项目,在出现的菜单中选择“插入→用户窗体”命令,随后在设计界面中将显示默认窗体和控件工具箱,该控件工具箱和VB的控件工具箱很类似,如图3所示。

2.用户窗体常用控件

虽然VBA窗体开发所用的控件和VB较为类似,但其属性和方法和VB存在一定的差异:

(1)标签控件:该控件用于显示不可编辑的文本,默认属性为Caption属性,默认事件为Click事件。

(2)文本框控件:该控件用于显示可编辑的文本信息,是VBA开发中最常用编辑控件,默认属性为Value属性,默认事件为Change事件。

(3)复合框控件:该控件将列表框和文本框进行结合,用户可进行输入和列表框选择操作,默认属性为Value属性,默认事件为Change事件。

(4)列表框控件:该控件用于显示值列表,用户可选择一个或多个列表项,VBA中的列表框可通过列表形式和选项按钮或复选框的形式使用,默认属性为Value属性,默认事件为Click事件。

(5)复选框控件:该控件用于显示选择的状态,即允许用户从两个值(如True或False)中选择一个。如选择则将显示标记,默认属性为Value属性,默认事件为Click事件。

(6)选项按钮控件:该控件用于显示多选项中每一项的选择状态,默认属性为Value属性,默认事件为Click事件。

(7)切换按钮控件:该控件用于显示选择状态,默认属性为Value属性,默认事件为Click事件。

(8)框架控件:该控件用于创建功能或视觉角度的控件组,默认事件为Click事件。

(9)命令按钮控件:该控件用于启动、结束或中断操作,其Click事件是窗体编程中最常用的事件代码,默认属性为Value属性,默认事件为Click事件。

(10)表头控件:该控件用于将一系列相关控件显示为一个多表的集合,默认属性为SelectedItem属性,默认事件为Change事件。

(11) 多页控件:该控件用于将多页面的内容以单个控件的方式实现,在处理不同类别的大量信息时很有用,默认事件为Change事件。

(12)滚动条控件:该控件用于按滚动块位置,返回或设置变量值,默认属性为Value属性,默认事件为Change事件。如需创建横向或纵向的滚动条,可在窗体设计时横向或纵向拖动滚动条控制点。

(13)旋转按钮控件:该控件用于增加及减少变量数值,默认属性为Value属性,默认事件为Change事件。

(14)图像控件:该控件用于显示图片,其支持的图片文件格式包括:bmp、cur、gif、ico、jpg和wmf等,默认事件为Click事件。

在VBA窗体设计中,可将一些开发中使用的控件全部选择后,直接拖至工具箱中,工具箱会添加一个“控件组”,在窗体设计中可直接将该控件组放置于窗体,大大提高了效率(该特点为VBA所独有)。

如开发者需使用VBA标准控件箱未提供的其他控件,可右键单击工具箱,在出现的菜单中选择“附加控件”命令,在出现的对话框中进行选择即可。

3.用户窗体常用事件

用户窗体的常用事件和VB窗体有一定的区别。

(1)Initialize事件:该事件发生在加载对象后和显示对象前,通常在该事件中初始化变量值或设置控件的属性。

(2)QueryClose事件:该事件发生在用户窗体关闭前,通常在该事件中检查用户窗体中未完成的操作。

cancel参数:整型,如将该参数设置未非零值,则可阻止关闭用户窗体。

Closemode参数:该参数用于获取触发QueryClose事件的原因。

(3)Terminate事件:该事件将所有引用的对象变量设置为Nothing常量,即删除对象的引用。该事件发生在卸载对象后。如非正常退出程序,则不会触发。

(五)类模块

VBA开发也提供了类模块结构,使开发者可将常用操作通过类进行合理封装,实现代码的复用和程序的结构化。

1.创建类模块

VBA中创建类模块非常简单,在VBA编辑器的工程资源管理器中右键单击项目,在出现的菜单中选择“插入→类模块”命令,随后在“工程资源管理器”中会出现添加的类模块,默认名称为“类1”,单击该类模块,可设置其属性,一般需设置其“Name”属性,以方便使用。双击该类模块,即可按窗体的操作方法来输入代码。

2.类模块常用事件

类模块中包含Initialize和Terminate二个事件。

(1)Initialize事件:该事件用于初始化类模块所用的数据。当程序中创建类模块时触发该事件。

(2)Terminate事件:当程序中类实例从内存删除时触发该事件,且该事件仅在程序正常结束时触发。

三、Office XP开发对象知识详解

VBA程序的开发主要由大量的对象组成。这里,我们精选了常用的Office VBA开发常用对象的知识,以方便读者速查。

(一)Word 2002开发对象

1.Application对象

该对象代表 Word 应用程序,通过该对象可访问Word中的其他所有对象。

(1)ActiveDocument属性:返回Document对象,代表活动文档。

(2)ActivePrinter属性:返回或设置当前打印机的名称。

(3)ActiveWindow属性:返回Window对象,代表活动窗口。

(4)Documents属性:返回Documents集合,代表所有打开文档。

(5)Selection属性:返回Selection对象,代表已选择的范围或插入点。

(6)Windows属性:返回Windows集合,代表所有文档窗口。

(7)Activate方法:用于激活指定的对象。

(8)PrintOut方法:打印全部或部分的文档。

(9)Quit方法:用于退出Word程序。

2.Document对象

该对象代表Word中打开的文档。通过“Documents(index)”的语法可获取Document对象,其中index参数代表文档的名称或索引号,此外还可用ActiveDocument属性获取当前编辑的文档。

(1)AttachedTemplate属性:返回Template对象,代表活动文档关联的模板。

(2)BuiltInDocumentProperties属性:返回DocumentProperties集合,代表指定文档的所有内置属性,如作者、主题或关键词等。

(3)Characters属性:返回Characters集合,代表文档中的字符。

(4)Tables属性:返回Tables集合,代表文档中所有的表格。

(5)CheckGrammar方法:检查字符串是否存在语法错误。

(6)CheckSpelling方法:用于检查字符串是否存在拼写错误。

(7)ComputeStatistics方法:用于获取指定文档的统计数据,如字数、页数等。

(8)PrintPreview方法:在打印预览和视图方式间进行切换。

(9)Save方法:用于保存文档或模板。

(10)Undo方法:用于撤消文档的最后一次操作。

3.Bookmark对象

该对象是Bookmarks集合中的元素,代表文档中的书签。通过“Bookmarks( index )”的语法可获取Bookmark对象,其中index参数代表书签名称或索引号。

(1)Select方法:用于选择指定的书签。

(2)Delete方法:用于删除指定的书签。

4.Field对象

该对象是Fields集合中的元素,代表文档中的域。通过“Fields(index) ”的语法可获取Field对象。

5.Template对象

该对象是Templates集合中的元素,代表文档模板。通过“Templates(index)”的语法可获取Template对象。

6.FontNames对象

该对象代表有效的字体名称列表。通过FontNames、LandscapeFontNames 或 PortraitFontNames属性可获取FontNames对象。

7.Options对象

该对象代表 Word 的应用程序和文档选项。

8.AutoTextEntries集合对象和AutoTextEntry对象

AutoTextEntries集合对象由AutoTextEntry对象组成,代表模板中所有的“自动图文集”词条。AutoTextEntry对象代表单一的“自动图文集”词条。

Insert方法:用于在指定的范围中通过插入“自动图文集”词条的方式来替换原内容。

9.Selection对象

该对象代表当前文档的选择内容,可为区域或插入点,每个文档仅有一个 Selection对象,且任意时刻仅可激活一个Selection对象,通过Selection属性可获取Selection对象。

(1)Text属性:返回或设置所选内容中的文本。

(2)Copy方法:将指定对象复制到剪贴板。

(3)Paste方法:将剪贴板内容粘贴至选择区域。

(4)TypeParagraph方法:用于插入新段落,等同于在编辑时按回车键。

(5)TypeText方法:用于插入指定的文本。

(6)WholeStory方法:用于扩展选择内容,并包含整个文字部分。

(7)GoTo方法:将插入点移至

vba编程基础知识

vba编程基础知识有下面这些:

VBA是编辑语言,宏是用VBA代码保存下来的程序。

VBA代码都是以“Sub宏名”及一对空括号开头,以“End Sub”结尾。

模块是保存过程的地方,一个模块可以保存多个不同类型的过程。

对象,工作簿,工作表,单元格,图片,图表,透视表等。

每个对象都有属性,属性是对象包含的内容或特点。(对象.属性)

对象的某些属性也是对象,属性和对象是相对而言的。

每个对象都有方法,方法是指在对象上执行的某个动作。(对象.方法)

VBA的编辑环境——VBE(Visual Basic Editor)

进入VBE的方法:

Alt + F11。

右击工作表,选择View Code 3. DEVELOPER下的Visual Basic。

立即窗口(view- Immdediate Window)中直接输入命令,回车后将显示命令执行后的结果。如果立即窗口未显示,快捷键Ctrl + G

因为VBA程序一般保存在模块里,所以先添加一个模块。

(责任编辑:IT教学网)

更多

推荐安全技术文章