VBA基本概念


一、VBA对象

几乎90%的VBA程序都是在操作对象,VBA有相应的对象、属性、方法和事件,其中对象是核心

a)        对象如何操作

对象.属性、对象.方法、父对象.子对象.属性

例:Sheets("工作表").Name----Sheets("工作表")是对象,Name是对象的属性

WorkBooks(2).Close-----前者是对象,Close是对象的方法

Range("a1:a100").Comment.Delete--------Range是父对象 Comment是子对象  Delete是方法

b)       常用的对象及其含义

i.         Application     代表整个Excel应用程序

ii.       Window        代表窗口

iii.     Worksheet             代表一个工作表

iv.      Sheets                  执行的或活动工作簿中所有工作表的集合

v.        ShapeRange           代表形状区域,它是文档中的一组形状

vi.      PivotTable             代表工作表上的数据透视表

vii.    Workbook             代表一个Excel工作簿

viii.  Shape                    代表绘图层中的对象,例如,自选图形、任意多边形、OLE对象或图片

ix.      Range                   代表某一个单元格、某一行、某一列、某以选定区域、或者某以三维区域

x.        Name                    代表单元格区域的定义名,名称可以是内置名称(如Print_Area)或自定义名称

xi.      Chart                    代表工作簿中的图表

xii.    FileDialog             提供文件对话框,其功能与Office应用程序中标准的‘打开’和‘保存’对话框类似

xiii.  CommandBarPopup       代表命令栏上的一个弹出式控件

xiv.  CommandBar         代表容器应用程序中的一个命令栏

c)        VBA的属性

属性是对象的外部和内部特征,包括大小、颜色、边距、数量、或者某一方面的行为,如:是否可以激活,是否可见,是否可以刷新,通过修改对象的属性值来改变对象的特征。可以在弹出提示的时候按F2查看所有成员,右击可以显示隐式成员,也可以查看帮助,搜索 对象 对象成员    worksheets 对象成员

d)       VBA的方法

VBA需要对象在钱,方法在后,例:worksheets.add----worksheets表示工作表对象,add是方法,表示新建,下面看下worksheets的方法列表

i.         Add              新建工作表,图表或宏表,新建的工作表将成为活动工作表

ii.       Copy       将工作表复制到工作簿的另一个位置

iii.     Delete     删除对象

iv.      FillAcrossSheets     将单元格区域复制到集合中所有其他工作表的同一个位置

v.        Move      将工作表移到工作簿的其他位置

vi.      PrintOut               打印对象

vii.    PrintPreview          按对象打印后的外观效果,显示对象的预览

viii.  Select      选择对象

e)        VBA的事件

时间是对象在某个状态下触发的动作,每个对象都会有诸多事件,不同时间有不同的触发条件

i.         事件举例

Private Sub workbook_open()

Sheets(1).Select

[a1] = "张帅鹏"

End Sub

当sheet1被打开的时候,A1处被赋值上去字符串

ii.       事件的分类及其用途

VBA有很多类事件,分类的表混由对象来决定

Application     应用程序事件

Workbook      工作簿事件

Worksheet      工作表事件

Chart             图表事件

UserForm       窗体事件

Label             标签事件(窗体中的控件)

Image            图像事件(ActiveX控件)

f)        VBA的运算符

i.         算数运算符

^            求一个数字的某次方,如A^2 

*            乘法运算

/             除法运算

\             对两个数作触发并返回一个整数

Mod        求两数的余数

+          加法运算   

-             减法运算

&           字符连接

ii.       比较运算符

<            小于

<=          小于或等于

>            大于

>=          大于或等于

=            等于

<>          不等于

Like和is        比较字符串的运算

iii.     逻辑运算符

And        用来对象两个表达式进行逻辑连接

Eqv        用来对两个表达式进行逻辑等价运算

Imp        用来对两个表达式进行逻辑蕴含运算

Not         用来对表达式进行逻辑否定运算

Or          用来对两个表达式进行逻辑分析取运算

Xor         用来对两个表达式进行逻辑互斥或运算

iv.      注释

在一行代码结束或在某一行上 '  单引号后则为注释

g)       简单的字符处理函数

i.         Option Compare[Binary|Text|Database]

不加后面参数表示默认的比较方式。作用在模块级别的默认比较方法

Bianary  不区分大小写的文本排序级别

Option Compare Binary

Sub 字符比较()

MsgBox "a" > "A"  '结果为true

End Sub

Text   区分大小写

Option Compare Text

Sub 字符比较()

MsgBox "a" > "A" '结果为false

End Sub

ii.       StrComp(string1,string2,[compare])     字符相似比较

如果string1小于string2返回 -1

大于              返回       1

等于              返回      0

String1或string2为null      返回       null

iii.     Strconv(string,conversion,LCID)字符串类型转换

Conversion第二个参数表示转换类型,根据不同参数可以转换9种类型的文本

vbUpperCase(常数)              1(值)      将字符串中字转换成大写

vbLowerCase                       2            将字符串中字转换成小写

vbProperCase                       3            将字符串中每个字的开头字母转成大写

vbWide                               4*           将字符串单字节字符转成成双字节字符

vbNarro                              8*           将字符串中双字节字符转成单字节字符

vbKatakanna                        16**       将字符串中平假名字符转成片假名字符

vbHiraganra                         32**       将字符串中片假名字符转成平假名字符

vbUnicode                           64           将字符串转成Unicode

vbFromUnicode                   ##           将字符串由Unicode转成系统的默认码页

代码:

Sub strconv运算()

MsgBox strconv("Enlish", vbUpperCase) & Chr(10) &strconv("Enlish", vbLowerCase) & Chr(10) &strconv("English", vbProperCase) & Chr(10) &strconv("English", vbWide)

 

End Sub

iv.      Format(expression[,format[,firsdayofweek[,firstweekioyear]]]):格式化字符

代码:

Sub 日期()

MsgBox Format(Date, "yyyy年m月") &Chr(10) & Format(Date, "AAA") & Chr(10) & Format(Now,"h") & "点钟", 64, "现在是"

End Sub

v.        LCase(String)/UCase(string)

转成大写和小写函数,返回结果

vi.      String(number,character)/Space(number)

得到重复字符的字符串

String(5,"*") 返回*****    Space(5)       返回5个空格

vii.    Lset/Rset

在以字符串变量中将以字符串往左对齐,或是将以用户定义类型变量复制到另一用户自定义类型变量,通俗点讲就是将字符串二按字符串一的进行取舍。如果字符串二长度小于字符串以则以空格填充,否则从左边开始街区字符串一的长度

悲剧:刚明白是什么意思,原来是按照第一个字符串的长度对下面字符串取舍,长度不够就用空格填充

代码:Sub Lset用法()

Dim str1

str1 = "广州11111111111111"

LSet str1 = "广州本田"

MsgBox "[" & str1 & "]"

str1 = "制造厂"

LSet str1 = "广州本田制造厂"

MsgBox str1

End Sub

viii.  Instr([start,]string1,string2[,compare])返回字符串出现位置

第三个参数指定的是否区分大小写,

vbUseCompareOption   -1 使用Option Compare 语句设置执行一个比较

vbBinaryCompare         0     执行一个二进制的比较(不区分大小写)

vbTextCompare             1     执行一个按照原文的比较(区分大小写)

例如:InStr(4,"我是大好人","好",1) 返回坐标

ix.       Left/Mid/Right:从左,中,右取舍

Left(String,length)  返回包含字符串中左边算起指定数量的字符

Mid(String,start[,length])  返回包含字符串从中间起指定数量的字符

Right(string,length)              返回包含字符串从右边算起指定数量的字符

x.        LTrim(String)/RTrim(string)/Trim(String)去除空格

返回其参数字符串的副本,没有前导空白(LTrim) 尾随空白(RTrim) 或前导和尾随空白(Trim)

xi.      Like字符串相似度比较

Result=string like pattern

如果string与pattern匹配为true,否则result为false 如果有一个为null,则也为null

Pattern里可以使用通配符

?             任何单一字符

*            0个或多个字符

#            任何一个数字(0-9)

[charlist]        charlist中的任何单一字符

[!charlist]              不再charlist中的任何单一字符

 

简单的验证案例实现:

插入用户窗体,加入一个文本框然后双击进入,注册它的change事件

Private Sub TextBox1_change()

    If Len(TextBox1.Text) >0 Then

        IfRight(TextBox1.Text, 1) Like "[a-z]" Then Exit Sub Else Me.TextBox1 =Left(TextBox1.Text, Len(TextBox1.Text) - 1)

    End If

End Sub

完成效果。随便录入字符,可以发现除小写字母外任何字符都无法录入,包括数字、标点、汉字。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值