VBA笔记
1、VBA数据类型
数据类型 | 存储空间大小 | 范围 |
Byte | 1个字节 | 0-255 |
Boolean | 2个字节 | true或false |
Integer | 2个字节 | -32768-32767 |
Long | 4个字节 | — |
Single | 4个字节 | — |
Double | 8个字节 | — |
Currency | 8个字节 | — |
Decimal | 14个字节 | — |
Date | 8个字符 | — |
Object | 4个字节 | 任何Object引用 |
String(变长) | 10字节加字符串长度 | 0到大约20亿 |
String(定长) | 字符串长度 | 1到大约65400 |
Variant(数字) | 16个字节 | 任何数字值,最大可达Double的范围 |
Variant(字符) | 22个字节加字符串长度 | 与变长String有相同的范围 |
用户自定义 | 所有元素所需数目 | — |
如果不指定数据类型,VBA自动将变量指定为变体型Variant.
1.1 数据类型的转换
CBool Boolean 任何有效的字符串或数值表达式
CByte Byte 0-255
CCur Currency -
CDate Date -
CDbl Double -
CDec Decimal 小数的数值
CInt Integer -
CLng Long -
CSng Single -
CStr String -
CVar Variant -
1.2 常量的声明
[Public | Private] Const constname [As type] = expression
Public:用于在模块级别中声明在所有模块中对所有过程都可以使用的常量,在过程中声明常量不能使用Public。
Private:用于在模块级别中声明只能在包含该声明的模块中使用的常数,不能在过程中使用。
2、过程
过程主要分为以下三类:Sub过程、Function过程和Property过程。
过程的命名规则注意事项:过程名可以和本过程的私有变量同名,但却不能和公有变量同名。
Sub过程语法:
Private | Public | Friend | [Static] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
Public:表示所有模块的所有其他过程都可访问这个Sub过程。如果在包含Option Private的模块中使用,则这个过程在该工作外是不可使用的。
Private:只有在包含其声明的模块中的其他过程可以访问该Sub过程。
Friend:只能在类模块中使用,表示该Sub过程在整个工程中都是可见的,但对对象实例的控制者是不可见的。
Static:表示在调用时保留Sub过程的局部变量的值。Static属性对在Sub外声明的变量不会产生影响。即使过程中也使用了这些变量。
- 模块级过程:只能在当前模块中调用的过程。
- 工程级过程:在当前工程中任何地方都可以随意调用的过程
按值传递和按址传递的参数区别:
Byval:按值传递,该情况下过程访问的是变量的副本,过程不会改变变量本身的值。
Byref:按地址传递,过程访问的是变量本身,过程可以改变变量的真正值。默认情况下,都按值传递参数。
Me关键字的的注意事项:
Me关键字不能出现在标准模块中,因标准模块不能代表对象。若从类模块中复制代码,则必须用指定对象或窗体名来取代Me,以保持原来的引用。通常只能在事件过程中使用,包括工作表代码窗口,工作簿代码窗口和类模块。
Me关键字不能出现在Set赋值号的左边,正确地使用ME赋值时是使用Let或者忽略。
3、Exit Sub和End的区别
1、是否释放公有变量
2、是否终止所有程序
4、Workbooks/Workbook/ThisWorkbook/ActiveWorkbook
- Workbook对象代表整个Excel工作簿,即Excel文件。
- Workbooks集合代表所有已经打开的工作簿,加载宏除外。
- ThisWorkbook:代码所在的Workbook对象。
- ActiveWorkbook:Excel活动窗口中的Workbook对象。
5、Worksheets/Worksheet/Sheets/Activesheet
- Worksheet对象代表一张工作表。
- Worksheets集合包括工作簿中所有的Worksheet对象。
- Sheets集合除了包含工作簿中的所有的Worksheet对象外,还包括工作簿中所有的图表工作表(Chart)对象和宏表对象。
- Activesheet:用于引用处于活动状态的工作表。
6、EntireRow/EntireColumn属性
返回一个Range 对象,该对象代表包含指定区域的整个行/列(或若干行/列)。只读。
7、Rows属性
- 对于 Application 对象,返回代表活动工作表所有行的 Range 对象。如果活动文档不是工作表,Rows 属性无效。Range 对象,只读。
- 对于 Range 对象,返回代表指定区域所有行的 Range 对象。
- 对于 Worksheet 对象,返回代表指定工作表所有行的 Range 对象。
在不用对象识别符的情况下使用此属性等价于ActiveSheet.Rows。
当应用于含多个选定区域的 Range 对象时,该属性只返回该区域中第一个子区域内的行。例如,如果 Range 对象有两个子区域:A1:B2 和 C3:D4,则 Selection.Rows.Count 返回 2 而不是 4。若要在一个可能包含多个选定区域的区域中使用该属性,请测试 Areas.Count 来判断该区域是否包含多个选择区域。如果是,则像第 3 个示例中所示,在该区域中的每个子区域上循环。
8、Columns属性
应用于 Application 对象的 Columns 属性。
返回一个 Range 对象,该对象代表活动工作表中的所有列。如果活动文档不是工作表,则 Columns 属性无效。只读。
应用于 Range 对象的 Columns 属性。
返回 Range 对象,该对象代表指定单元格区域中的列。只读。
应用于 WorkSheet 对象的 Columns 属性。
返回一个 Range 对象,该对象代表指定工作表上的所有列。只读。
在不使用对象识别符的情况下使用此属性等价于 ActiveSheet.Columns。
当对一个多重选定区域的 Range 对象应用属性时,此属性返回的只是所选区域的第一个子区域中的列。例如,如果 Range 对象有两个子区域 A1:B2 和 C3:D4,那么,Selection.Columns.Count 的返回值是 2,而不是 4。若要对一个可能包含多重选定区域的区域使用此属性,请用 Areas.Count 方法测试一下此区域内是否包含多个子区域。如果确实包含多个子区域,可对此区域内的每一子区域进行循环。
9、Row/Column属性
返回指定区域中第一个子区域的第一行/列的行/列号。Long 类型,只读。
10、FileDialog属性
返回一个FileDialog 对象,该对象代表文件对话框的实例。
expression.FileDialog(fileDialogType)
fileDialogType-->MsoFileDialogType 类型,必需。文件对话框的类型。
MsoFileDialogType 可为以下 MsoFileDialogType 常量之一。
msoFileDialogFilePicker: 允许用户选择一个文件。
msoFileDialogFolderPicker: 允许用户选择一个文件夹。
msoFileDialogOpen: 允许用户打开一个文件。
msoFileDialogSaveAs: 允许用户保存一个文件。
11、Application对象
属性:
A-->ActiveCell、ActiveChart、ActivePrinter、ActiveProtectedViewWindow、ActiveSheet、ActiveWindow、ActiveWorkbook、AlertBeforeOverwriting、Application、AskToUpdateLinks、AutoCorrect、AutoPercentEntry
C-->Caption、CellDragAndDrop、ClipboardFormats、Columns、CommandBars、CopyObjectsWithCells、Cursor、CutCopyMode
D-->DecimalSeparator、Dialogs、DefaultFilePath、DefaultSaveFormat、DeferAsyncQueries、DisplayAlerts、DisplayCommentIndicator、DisplayFormulaAutoComplete、DisplayFullScreen、DisplayFunctionToolTips、DisplayNoteIndicator、DisplayRecentFiles、DisplayScrollBars、DisplayStatusBar
FileDialog、、、
OperatingSystem、Version、Visible、
W-->WarnOnFunctionNameConflict、Watches、Width、Windows、、WindowState、Workbooks、WorksheetFunction、Worksheets、
方法:
ActivateMicrosoftApp:激活一个Microsoft应用程序,如果程序正在运行中,此方法激活正在运行中的程序,否则,此方法创建启动一个新的应用程序实例。
AddCustomList:为自定义自动填充或者自定义排序增加一个自定义序列,如果增加的序列已存在,此方法将不做什么。
Calculate:计算所有打开的工作簿或者某个工作簿中的指定工作表或者某个工作表中的指定区域。
CentimetersToPoints:将厘米转换为点度量(1点=0.035cm)
CheckAbort:
CheckSpelling:
ConvertFormula:
DeleteCustomList:
DoubleClick:
Evaluate:
FindFile:
GetCustomListContents:
GetCustomListNum:
GetOpenFilename:
GetSaveAsFilename:
Goto:
InchesToPoints:将英寸转换为点度量
InputBox:显示一个对话框用于用户输入,返回输入在对话框中的信息。
Intersect:返回一个Range对象,它表示两个或多个范围的矩形交集。
MailLogoff:
MailLogon:
OnKey:
OnRepeat:如果在运行设置此属性的过程之后选择Repeat命令,则设置Repeat项目以及将运行的过程的名称。
OnTime:在将来指定的时间安排一个程序运行(在一天中特定的时间或者经过一段特定时间后)。
OnUndo:设置Undo命令的文本以及运行设置此属性的过程后选择“撤消”命令时运行的过程的名称。
Quit:关闭Microsoft Excel
Repeat:重复上一次用户接口操作
Run:运行一个宏或者调用一个函数
SendKeys:将案件发送到活动的应用程序中
Undo:取消上一次用户接口操作
Union:返回两至多个区域的联合
Volatile:将用户自定义函数标记为易失性函数。一个易失性函数必须被计算无论何时工作表中的任意单元格出现计算时。一个非易失性函数仅当输入变量改变时重新计算。如果在用户自定义函数中不使用计算的工作表单元格,此方法将没有影响。
Wait:暂停正在运行的宏直到一个指定的时间点,如果到达指定的时间点,返回True。
VBA笔记的更多相关文章
- VBA笔记(三)——常用对象
VBA实际上就是操作Excel,把Excel进行拆解,划分多层对象,由顶至下为(也可以说是层层包裹): Application:代表Excel程序本性,之后我们操作对象都在它之下,因为是唯一且至高点, ...
- VBA笔记(二)——基础语法
数据类型 VBA提供了15种标准数据类型,具体见下表: 变量 Sub 变量学习() 'Dim 变量名 As 数据类型 Dim str1 As String '声明定长的String变量 '使用变量类型 ...
- VBA笔记(一)
开启VBA编程环境--VBE 方法一:按<Alt+F11>组合建 方法二:查看代码 宏设置 当然启用宏的设置方式不同,宏的启动方式也不一样. 首先打开"office 按钮&quo ...
- VBA笔记(一)——基础配置
开启VBA编程环境——VBE 方法一:按<Alt+F11>组合建 方法二:查看代码 宏设置 当然启用宏的设置方式不同,宏的启动方式也不一样. 首先打开“office 按钮”,选择“exce ...
- VBA笔记-参考教程
参考教程1: http://www.cnblogs.com/wuzhiblog/tag/VBA/ 1. VBA中字符换行 VBA中字符换行显示需要使用换行符来完成.下面是常用的换行符 ...
- VBA笔记(四)——立即窗口的使用
开启立即窗口 方法一:视图-立即窗口 方法二:组合键<Ctrl+G> Debug.Print 可以在立即窗口打印输出
- vba 笔记
1.PlanWS5.Range("D5:E13").Copy 复制PlanWS5.Range("G5:H13").PasteSpecial Paste:=x ...
- Excel藏的很深(1)
Excel 的强大功能, 神奇! 1.快速定位数据 ctrl+g 定位条件; 或者菜单中: 查找与选择->定位条件 (1) 删除所有的错误值(ref这种) (2) 实现空格自动填充0: ctr ...
- VBA正则笔记 理解肯定环视
之前没有理解好,还以为是学习笔记有谬误. 'VBA正则笔记 肯定环视 Public Sub RegExHandle() Dim Regex As Object Dim Mh As Object, On ...
随机推荐
- pycharm 有汉字的地方就有阴影
1.pycharm 有汉字的地方就有阴影 编码申明 阴影就会消失 # _*_ coding:UTF-8
- 使用Windows api 获得系统时间并生成文件夹
// 使用window api 获得系统时间 // 生成 #include "stdafx.h" #include <Windows.h> #include <d ...
- npm安装使用^符号时,在0.0.1等版本下区别
文档地址 https://docs.npmjs.com/misc/semver Caret Ranges ^1.2.3 ^0.2.5 ^0.0.4§ Allows changes that do no ...
- LeetCode 611. Valid Triangle Number有效三角形的个数 (C++)
题目: Given an array consists of non-negative integers, your task is to count the number of triplets c ...
- JDOJ3010 核反应堆
JDOJ3010 核反应堆 https://neooj.com/oldoj/problem.php?id=3010 题目描述 某核反应堆有两类事件发生: 高能质点碰击核子时,质点被吸收,放出3个高能质 ...
- Windbg Locals(局部变量)窗口的使用
在WinDbg中,可以通过输入命令.使用“局部变量”窗口或使用“监视”窗口查看局部变量.局部变量窗口显示当前作用域中的本地变量的所有信息. 如何打开Locals窗口 通过菜单View--->Lo ...
- [LeetCode] 375. Guess Number Higher or Lower II 猜数字大小之二
We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...
- [LeetCode] 18. 4Sum 四数之和
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...
- 《30天自制操作系统》笔记2 --- 初步了解汇编产生的二进制(Day1)
nask.exe应该就是nas kit(nas开发工具的意思),由于这个编译器是作者自己写的,所以这种汇编语言应该是作者改造出来的,所以我叫它nas汇编语言. 作者说nask是模仿nasm语法的,关于 ...
- mongodb 系列 ~ mongo 用户验证系列
MongoClientURI connectionString = new MongoClientURI("mongodb://root:****@dds-bp114e3f1fc441342 ...