01 对象和数值¶
在表格中,我们至少要清楚理解三类对象,工作簿对象,工作表对象和单元格对象
一、工作簿对象¶
对于工作簿对象,我们主要有以下几种不同的引用方式:
- 方式1:根据工作簿路径引用,
workbooks("工作簿路径"),这种情况适用于工作簿本身未通过EXCEL打开 - 方式2:根据工作簿名称引用,
workbooks("工作簿名称"),这种情况适用于工作簿已打开 - 方式3:
activeworkbook:选取活动窗口的工作簿 - 方式4:
thisworkbook:选取代码所在的工作簿
dim定义了一个工作簿对象,注意这个是对象,因此赋值的时候除了 = 还需要通过set来指定
二、工作表对象¶
对于工作表对象,我们也有不同的情况,主要包括以下几类:
sheets(n): 表示按工作表顺序定位的第n个工作表,从下标1开始
sheetn:系统命名的工作表,每次你新建一个表,系统都会给一个编号,比如开始有sheet1,sheet2,sheet3三个表,就算你后面删除了sheet2这个表,系统内部的编号还是不变,sheet1和sheet3还在那里,这个编号在VBA编程界面查看
sheets("工作表名"):按工作表名定位,比如上面的1号,2号,3这些都是工作表的名字activesheet: 活动工作表,也就是目前显示的这个工作表
一般我们对工作表的完整写法是worksheets,但是也可以像我上面这样简写为sheets
dim定义了一个工作表对象,一样需要通过set来指定,一般是需要写Activeworkbook.Worksheets(1),代表当前活动工作簿下的工作表,但是省略不写默认是当前工作簿,这个问题在你进行工作簿切换的时候尤其需要注意,如果切换之后不是对当前工作簿操作,就需要指定具体的工作簿
三、区域和单元格¶
3.1 单元格¶
对于单元格的引用,我们通常有以下几种方式:
range("a1"):通过range方法,表示A1单元格cells(1,1):通过cells方法,给定行和列,指定对应单元格,也可以用字母代替列,比如cells(5,"d")[A1]:通过[ ]方法,给定具体的单元格
ActiveSheet.range("A1"),表示当前的活动sheet
3.2 区域¶
区域其实就是单元格的集合,因此也有共通之处,主要有以下几种不同的方式
range("a5:c10"):通过range实现,表示从A5到C10这一块表格区域range("a5","c10"):一样通过range实现,不过可以通过逗号隔开selection: 代表当前光标所选取的区域Range(Cells(1, 1), Cells(2, 2)):可以和Cells混合进行使用,表示从A1到B2单元格这块区域Range(Cells(1, 1), [B2]),等同于上方,是三种不同方式的混合,表示从A1到B2单元格这块区域
四、数值类型¶
那通过上面的了解,我们已经知道了三个主要的概念,以及如何在VBA代码中表示它们,那接下来,我们重点讲一下数据类型,在之前的代码里面,我们通过dim定义了workbook和worksheet类型,分别表示工作簿和工作表,这些可以称作对象,而对于一个具体的数值,我们有以下这些最常用的:
| VBA写法 | 含义 | 范围 | 简写 |
|---|---|---|---|
| integer | 整型 | -32768 到 32767 | % |
| byte | 字节 | 0 到 255 | |
| long | 长整型 | -2147483648 到 2147483647 | & |
| single | 单精度浮点数 | 保留6位精度 | ! |
| double | 双精度浮点数 | 保留10位精度 | # |
| string | 字符串 | - | $ |
| date | 日期 | 100年1月1日 到 9999年12月31日 | |
| Variant | 变量 | - | |
| Boolean | 布尔值 | - | |
| Currency | 货币型 | - | @ |
| Decimal | 小数 | 只能在变体中使用 |
通过dim我们可以把一个变量定义为以上的类型,可以参考下方的具体写法: