注释:
编码规则:
Form1.Width = 300 : Form1.Caption = “VB!”
例如:Address = “天津市河北工业大学” + _
“现代化教学中心” + _
“计算机技术基础教研室”
在Excel VBA中类模块就相当于一个类,类模块的名字就是类名。
下面为定义的一个类Class1,并且有些基本属性及一个初始化函数
下面定义一个类Class1,
Private name, sex As String
Private age As Integer
Public rng As Range
Sub class_initialize() '初始化
sex = "男"
age = 20
End Sub
Public Property Get GetName() As Variant
GetName = name
End Property
Public Property Get GetSex() As Variant
GetSex = sex
End Property
Public Property Get GetAge() As Integer
GetAge = age
End Property
Public Property Let SetName(newName As String)
name = newName
End Property
Public Property Let SetSex(newSex As String)
sex = newSex
End Property
Public Property Let SetAge(newAge As Integer)
age = newAge
End Property
Public Function GetInfo() As String
GetInfo = "姓名:" & name & ";性别:" & sex & ";年龄:" & age
End Function
Public Property Get maxNumer(num As Integer) As Integer
maxNumber = Application.WorksheetFunction.Max(num, age)
End Property
Public Property Set SetBckColor(myRng As Range)
myRng.Interior.ColorIndex = 3
End Property
新建一个过程
Sub test()
Set tmp = New Class1
Debug.Print tmp.GetAge() '20
tmp.SetName = "张三"
tmp.SetAge = 23
Debug.Print tmp.GetInfo() '姓名:张三;性别:男;年龄:23
Set tmp.SetBckColor = Sheet3.Rows(1) ‘将Sheet3的第一行背景色设置为红色
End Sub
新建一个模块。
Option Explicit
Sub a()
Dim ab As New Class1
Debug.Print ab.x
End Sub
不能使用NEW创建的对象
不能使用NEW创建 |
不允许的代码例子 |
基本数据类型的变量 |
Dim X As New String |
任何一般对象类型的变量 |
Dim X As New Control |
任何特定控件类型的变量 |
Dim X As New ListBox |
任何特定控件的变量 |
Dim X As New lstName |
常用对象
对象名称 |
代表事项 |
Application对象 |
代表整个Excel应用程序 |
Debug对象 |
在运行时将输出发送到立即窗口 |
Name对象 |
代表单元格区域的定义名称 |
Dialog对象 |
代表内置的Excel对话框 |
Range集合对象 |
代表某一单元格、某一行、某一列、某一选定区域 |
Window对象 |
代表一个窗口 |
Windows集合对象 |
代表Excel中所有Window对象的集合 |
Chart对象 |
工作薄中的图标 |
Charts集合对象 |
指定的或者活动的工作薄中所有的图表的集合 |
Sheets集合对象 |
指定或活动工作薄中所有工作表的集合,Sheets集合可以包括Chart对象或WordSheet对象 |
WorkBook对象 |
代表Excel工作薄 |
WorkSheet对象 |
代表一张工作表 |
Shape对象 |
代表图层中的对象,例如自选图形、任意多边形、OLE对象或图片 |
AutoFIle对象 |
代表指定工作表的自动筛选 |
Filters集合对象 |
由多个Fileter对象组成的集合,这些对象代表自动筛选区域内的所有的筛选 |
Filter对象 |
代表单个列的筛选 |
以下两种方式均可:
变量声明格式如下:
Dim|Private|Public|Static <变量1> as <类型1> [,<变量2> as <类型2> …..]
关键字 |
使用范围 |
Dim |
可以用在任何场合定义变量 |
Private |
可以用于定义窗体级或模块级,不能在过程中使用 |
Public |
用于窗体级或者模块级定义全局变量,不能在过程内部使用 |
Static |
只能在过程内部使用,用于定义静态的局部变量 |
注:没有是上面的关键字来明确的变量叫做隐式变量,系统自动分配的数据类型为Variant,如DaysLeft=100.
Private name As String '声明全局变量
Private Sub A()
Dim M As Range '声明局部变量
Set M = Sheet1.Range("A1")
M.Value = InputBox("请输入:")
name = Sheet1.Range("A1").Value
MsgBox ("你输入的内容" & name)
End Sub
声明常量
Private Sub A()
Const pi As Integer = 3.1415926
Dim area As Double
area = pi * 2 * 2
Debug.Print ("面积为:" & area)
End Sub