VBA 学习笔记 - 变量与常量
学习资料:https://www.yiibai.com/vba/vba_variables.html
变量和常量命名规则
- 必须以字母开头
- 不能包含空格、句点(.)、感叹号(!)或字符@,&,$,#
- 长度不能超过 255 个字符
- 不能使用 Visual Basic 保留关键字
变量
变量语法
变量在使用前必须声明即定义变量。
Dim variable_name As variable_type
数据类型
在程序编写中,定义一个变量的数据类型,首先是表示它的存储形式。
其次是通知编译程序使用变量的数据类型,取得优化代码;这样可以提高程序的运行速度,减少内存的占用。
数字型
字节整型 Byte
0 ~ 255
特点:占用字节数少,同样一个字母 Byte 类型只占用 1 个字节
参考资料:https://bbs.csdn.net/topics/20409629
整型 Integer
-32,768 ~ 32,767
说明:存储为 16 位(2 个字节)的整数
长整型 Long
-2,147,483,648 ~ 2,147,483,648
说明:存储为 32 位(4 个字节)有符号的数值形式
丸子:刚刚看到百度 VB 贴吧 2014 年网友在讨论,有一个数字定义为 Long,结果溢出了,所以说为啥 VB 分得这么详细,直接一个数字型不就完了。
大概还是因为当年存储跟不上,为了节省空间?
单精度浮点值 Single
负值:-3.402823E+38 ~ -1.401298E-45
正值: 1.401298E-45 ~ 3.402823E+38
说明:占用 32 位(4 个字节)存储空间。
单精度在一些处理器上比双精度更快而且只占用双精度一半的空间,但是当值很大或很小的时候,它将变得不精确。当你需要小数部分并且对精度的要求不高时,单精度浮点型的变量是有用的。例如,当表示美元和分时,单精度浮点型是有用的。
双精度浮点值 Double
负值:-1.79769313486232e+308 ~ -4.94065645841247E-324
正值: 4.94065645841247E-324 ~ 1.79769313486232e+308
说明:占用 64 位(8 个字节)的存储空间。
在一些现代的被优化用来进行高速数学计算的处理器上双精度型实际上比单精度的快。所有超出人类经验的数学函数,如 sin( ),cos( ) ,和 sqrt( )均返回双精度的值。当你需要保持多次反复迭代的计算的精确性时,或在操作值很大的数字时,双精度型是最好的选择。
货币型 Currency
-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807
说明:存储为 64 位(8 个字节)整型的数值形式,然后除以 10,000 给出一个定点数,其小数点左边有 15 位数字,右边有 4 位数字。
小数型 Decimal
如果不使用小数,则为+/- 79,228,162,514,264,337,593,543,950,335
如果使用小数,则为:+/- 7.9228162514264337593543950335
说明:适用于要求使用大量有效的整数及小数位数并且没有舍入错误的财务计算。Decimal 类型不会消除对舍入的需要,而是将因舍入而导致的错误降到最少。
非数字型
固定长度 String
1 ~ 65,400 个字符
可变长度 String
0 到 20 亿字符
日期 Date
100 年 1 月 1 日至 9999 年 12 月 31 日
布尔值 Boolean
True / False
Object
任何嵌入的对象
Variant (numeric)
任何大到 double 的数字值
Variant (text)
与可变长度的 string 一样。
示例
Private Sub VariablesDemo()
Dim password As String
password = "123456"
Dim num As Integer
num = 1234
Dim BirthDay As Date
BirthDay = DateValue("1998-10-11")
MsgBox ("设置的密码是:" & password & Chr(10) & "num的值是:" & num & Chr(10) & "Birthday的值是:" & BirthDay)
End Sub
常量
常量语法
Const <> As <> = <>
示例
Private Sub ConstantDemo()
Const MyInteger As Integer = 720
Const myDate As Date = #10/21/2000#
Const myDay As String = "Sunday"
MsgBox ("整数值是:" & MyInteger & Chr(10) & "myDate的值是:" & myDate & Chr(10) & "myDay 的值是:" & myDay)
End Sub
丸子笔记
Private Sub
私有声明过程,大概相当于 Lua 中的 local function 或者 local 变量吧!
Chr
CHR 函数,传入一个数值,返回这个数值对应的 ascii 码字符,比如 chr(65)输出的是大写的 A
chr(13) 表示换行
chr(10) 表示回车