- 注释是用 单引号开头
‘
- 语句结束不需要分号
- 定义子程序
- 方法体不需要{}包裹
- 函数 ,和子程序的区别在于有返回值,他们都可以被office 调用
- 函数变量命名规范,不能使用保留关键字,不能数字开头
需要注意的是excel中的纵坐标已经是三个字母开头了,所以要避免使用低于4个字母的方法名或者变量名,比如a1,f1,m1这种会和excel的单元格坐标冲突,如果一定要用三个字符开头,需要取xfd以后得名字,至少要去xfe1以后得名字,全局变量和方法名字建议直接4个字符以上的开头(在VBA里面是不会冲突的,在excel里面当做公式使用会报错)。 - 有参数的子程序和函数的定义和调用
- 子程序调用后面不能加括号,子程序没有返回值不能赋值给别的变量或者作为实参赋值给形参
- 函数调用可以 使用用括号调用或者无括号调用
- 函数调用 赋值给别的变量或者作为实参的时候必须使用括号
- 函数调用 不需要使用返回值赋值给别的变量的时候不能使用括号
- 总的来说子过程不能使用括号,函数在使用到返回值的时候必须使用括号,没有使用到返回值的时候不能使用括号
- 弹出提示框
MsgBox "xxxx" - 变量申明
- 如果不指定数据类型,就是自动类型(Variant),会自动变长,会不会自动变小?
- 常量申明
- vba里面的变量默认没申明也可以直接使用,可以指定为必须申明才能使用
- vba的数据类型
- Byte 1字节
- Boolean 2字节 ?还是1位?
- Integer 只有2 字节?
- Long ,只有4个字节,是java的 Long 的一半?
- Currency 8个字节 这个才是真的Long
- Single 4字节, 单精浮点数
- Double 8字节 双精浮点数
- Date ,需要写成 #01/30/2024# 格式
- String
- vba的关键字,数据类型第一个字符都是大写,申明的变量和方法没有强制要求大写开头,为了区分可以建议小写开头
但是貌似VBA的内置方法和属性都是大写开头,比如excel里面的内置属性和方法 - 变量的三种生命周期,子程序内有效<模块内有效<全局有效
- Static 修饰子程序里面的变量,这样的变量在子程序执行完以后不会回收内存,效果类把变量定义在子程序外面,
- VBA 里面的运算符和access的类似,或者说因为使用VBA office 全套都是这用法
/
表示除,\
表示整除Mod
表示取余数,不等于用<>
,等于还是用的 = 不是==? - VBA 的 逻辑运算符 And ,Or ,Not
- if 的写法
- select case 类似 switch case
- for next 就是for循环
- do while 后面写的执行条件
- do until 后面写的是退出条件
- 数组的定义和使用
- 数组的定义可以只写上标
- 可以通过 option base 1 设置默认下标
- 二维数组的定义,需要注意的是二维数组里面的那一维是列,外围是行
考虑excel 格子是A1这种格式,在二维数组遍历的时候,内层先执行完,这和excel坐标列在前是相符合的
- 动态数组
- VB是面向对象的语言为啥C语言是面向过程的语言?还是说VB之前是面向过程,后来补充的面向对象的模块?
- excel里面的对象层级关系是 程序>工作簿>工作表>表格
- Range 可以定位excel的单元格
- Range(xxx).Cells是相对Range的相对坐标,Range(xxx).Offset 的区别
- Offset只能在Range以后使用,表示相对位置,Cells可以直接使用表示绝对位置,也能在Range 后面使用表示相对位置
- 使用相对坐标的时候,Offset没有0坐标,Cells有0,0 坐标等价于Offset(-1,-1)
- 他们的坐标都是数字,Range("A1")的坐标是字母表示纵坐标
- Range(xxx).Select 和 Range(xxx).Activate的区别
- Select 是选中一个区域,默认激活第一个选中的格子
- Activate是激活一个格子,激活一个区域的时候等同于选中一个区域,然后激活第一个格子
- 可以先用Select 选中范围,然后使用activate指定激活的格子,在激活单个格子并且位于之前选中区域的时候选中区域不会改变
- 然后可以通过 Selection.Value,ActiveCell.Value 设置值
- end方法,相当于ctrl+shift+箭头
Range(xxx).End(Xl方向) 相当于 ctrl + 箭头
Range(左上,Range(xxx).End(Xl方向)) 可以选中指定区域
- excel 里面的单元格坐标是默认的变量,比如A1,并且A1默认指向A1.Value
- with语句 ,类似链式编程
- 使用for each 变量 excel 的 range
- 接受excel单元格的几种方式
- excel 要弃用vba宏需要 保存为xlsm格式,xlsx格式默认没有开启宏