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笔记的更多相关文章

  1. VBA笔记(三)——常用对象

    VBA实际上就是操作Excel,把Excel进行拆解,划分多层对象,由顶至下为(也可以说是层层包裹): Application:代表Excel程序本性,之后我们操作对象都在它之下,因为是唯一且至高点, ...

  2. VBA笔记(二)——基础语法

    数据类型 VBA提供了15种标准数据类型,具体见下表: 变量 Sub 变量学习() 'Dim 变量名 As 数据类型 Dim str1 As String '声明定长的String变量 '使用变量类型 ...

  3. VBA笔记(一)

    开启VBA编程环境--VBE 方法一:按<Alt+F11>组合建 方法二:查看代码 宏设置 当然启用宏的设置方式不同,宏的启动方式也不一样. 首先打开"office 按钮&quo ...

  4. VBA笔记(一)——基础配置

    开启VBA编程环境——VBE 方法一:按<Alt+F11>组合建 方法二:查看代码 宏设置 当然启用宏的设置方式不同,宏的启动方式也不一样. 首先打开“office 按钮”,选择“exce ...

  5. VBA笔记-参考教程

    参考教程1: http://www.cnblogs.com/wuzhiblog/tag/VBA/ 1. VBA中字符换行 VBA中字符换行显示需要使用换行符来完成.下面是常用的换行符          ...

  6. VBA笔记(四)——立即窗口的使用

    开启立即窗口 方法一:视图-立即窗口 方法二:组合键<Ctrl+G> Debug.Print 可以在立即窗口打印输出

  7. vba 笔记

    1.PlanWS5.Range("D5:E13").Copy   复制PlanWS5.Range("G5:H13").PasteSpecial Paste:=x ...

  8. Excel藏的很深(1)

    Excel 的强大功能, 神奇! 1.快速定位数据  ctrl+g 定位条件; 或者菜单中: 查找与选择->定位条件 (1) 删除所有的错误值(ref这种) (2) 实现空格自动填充0: ctr ...

  9. VBA正则笔记 理解肯定环视

    之前没有理解好,还以为是学习笔记有谬误. 'VBA正则笔记 肯定环视 Public Sub RegExHandle() Dim Regex As Object Dim Mh As Object, On ...

随机推荐

  1. 201871010114-李岩松《面向对象程序设计(java)》第十五周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  2. 201871020225-牟星源《面向对象程序设计(java)》第十三周学习总结

    201871020225-牟星源<面向对象程序设计(java)>第十三周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  3. opencv旋转图像,90度标准旋转

    摘自opencv 源代码 void rotate(InputArray _src, OutputArray _dst, int rotateMode) { CV_Assert(_src.dims() ...

  4. Mysql-多表数据记录查询

    多表数据记录查询 一.关系数据操作 并(UNION) 并就是把具有相同字段数目和字段类型的表合并到一起 笛卡尔积(CARTESIAN PRODUCT) 笛卡尔积就是没有连接条件表关系返回的结果. 内连 ...

  5. Docker底层原理(三)

    1. 我们运行:docker run hello-world 由于本地没有hello-world,所以会远程下载一个hello-world的镜像,并在容器内运行. 2. docker run干了什么?

  6. AndroidStdio模拟器打不开报错 Guest isn't online after 7 seconds

    开了好几次模拟器,始终运行不出来原来的一个项目.报错如下: 解决方案: 经过百度,可能是Android Studio 3.0升级到3.0.1,启动原来建好的模拟器废掉了. 找到你软件中的 建议选择屏幕 ...

  7. JOI2013-2019题解

    JOI2013-2019题解 Link

  8. [LeetCode] 83. Remove Duplicates from Sorted List 移除有序链表中的重复项

    Given a sorted linked list, delete all duplicates such that each element appear only once. Example 1 ...

  9. OSG :三维无序离散点构建Delaunay三角网

    利用OSG的osgUtil库里面的DelaunayTriangulator类. points是需要构建三角网的点 osgUtil::DelaunayTriangulator* trig = new o ...

  10. 零次学习(Zero-Shot Learning)入门(转)

    很久没有更文章了,主要是没有找到zero-shot learning(ZSL)方面我特别想要分享的文章,且中间有一段时间在考虑要不要继续做这个题目,再加上我懒 (¬_¬),所以一直拖到了现在. 最近科 ...