一、PERSONAL.XLSB
- 如果需要经常在不同的工作薄里使用相同的一些宏功能代码,建议配置一个打开Excel软件后总是会默认打开的PERSONAL.XLSB文件。
- PERSONAL.XLSB默认不可见,可以通过「视图」里的功能来"取消隐藏"或重新"隐藏"工作薄。
- xlsb是一种比较节省体积的保存格式:推荐使用xlsb格式保存Excel文件。
- Excel使用VBA小程序的方法。
二、VBE相关配置
- 在Excel中,按下「Alt+F11」打开的界面就叫VBE(Visual Basic Editor),这里介绍一些VBE的配置及使用方法,提高以后编写代码的效率。
- 关闭“自动语法检测”
在VBA中切换代码行时,默认会进行语法检测。有时未完成该行,鼠标选择其它行的内容进行复制,则会弹出警告窗口,影响编辑效率。可以通过「工具–>选项」设置关闭自动检测:
- 打开「视图->工具栏–>编辑」,方便批量注释、取消注释代码块。
- 「工具–>引用」,可以添加很多现有的功能库,如我用过的
名称 | 内容 |
---|---|
Microsoft Scripting Runtime | 字典Dictionary类 |
Microsoft VBScript Regular Expressions | 正则表达式 |
Microsoft XML,v3.0 | XML文档分析 |
三、定义变量
- 简表
数据类型 | 类型声明字符 |
---|---|
Integer | % |
Long | & |
Single | ! |
Double | # |
String | $ |
-
为了代码精短,我会习惯性的使用类型声明字符,但又为了代码可读性,同类型的最后一个变量,会保留as的显式类型定义,如Dim i&, j&, k As Long。
-
更多示例代码
Sub 变量定义方法示例()
'1 显示定义后再使用
Const 常量整数1 As Integer = 9
Const 常量整数2 = 7
Const 日期 = #1/11/1982# '定义日期1982年1月11日
'2 未定义直接使用
一个字符串 = "Yang" '变量可以直接使用
一个字符串 = 13 '并且可以随时改变数据类型
'3 Dim
'Dim可以定义变量,方法同上
'Dim还可以定义对象
Dim 对象1 As Object
Dim 字典 As Dictionary
'4 综合介绍
'Interge是16位无符号整型,long是32位无符号整型
Dim 定义整数 As Integer
Dim 整数的另一种定义方法%
Dim long的特殊定义方法&
'Single是单精度浮点型,double是双精度浮点型
Dim Single的特殊定义方法! '32位
Dim Double的特殊定义方法# '64位
' 其他类型
Dim Currency货币型#
Dim 布尔值 As Boolean
' 注意字节型,不是字符型
Dim 字节型 As Byte '0~255,在进行ANSI和UTF读取时,用string可能会破坏原值
' 时间类型
Dim Tdate As Date
Tdate = #11/15/2005# '写#2005-11-15#,#November 15,2005#时会自动变为#11/15/2005#
Tdate = #11/15/2005 1:00:00 PM#
Dim 字符串 As String '在VBA中,字符和字符串没有区别
字符串 = "Hello"
字符串 = "a"
End Sub
四、基本语法结构
- 判断,字符串处理
If InStr(s, "★") > 0 Then
星星数 = Len(s) - Len(Replace(s, "★", ""))
ElseIf InStr(s, "难度:") > 0 Then
n = Mid(s, InStr(s, "难度:") + 3, 1)
If CStr(星星数) <> n Then
p.Select
p.HighlightColorIndex = wdYellow
Exit Sub
End If
End If
- For循环
For i = 1 To lenth
t = toInt(Mid(s, i, 1))
If t = -1 Then
toBase10Value = CVErr(xlErrNA)
Exit Function
Else
toBase10Value = toBase10Value * oriBase + t
End If
Next i
- While循环
Do While d <> 0
r = d Mod dstBase
toBaseNValue = toChar(r) + toBaseNValue
d = Int(d / dstBase) '截去小数向下取整
Loop