首页 > 代码库 > VBA笔记

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外声明的变量不会产生影响。即使过程中也使用了这些变量。

  • 模块级过程:只能在当前模块中调用的过程。
  • 工程级过程:在当前工程中任何地方都可以随意调用的过程

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笔记