Excel VBA 学习笔记(陆续更新)

1.什么是宏:宏就是一系列固定动作的集合。

2.VBA窗口:工程资源窗口包含了当前在Excel中打开的所有对象;属性窗口:显示选择的Excel对象的属性;立即窗口:可以直接执行VBA语句,快捷键CTRL+G;

3.对象:Application对象的workbooks集合的mysheet工作表的单元格区域A1:D10按照如下方式表示:Application.Workbooks("mysheet").Range("A1:D10");哪部分是激活的就可以省略那部分,单个单元格可以用Cells(rowNum,colNum)表示。

4.属性:Worksheets(1).name,如关于Worksheets(1)和Worksheets("sheet1"):前者指第一个worksheet,后者指名为sheet1的worksheet;

5.方法:如Range("A1:C3").Select

6.VBA过程:

Sub 过程名() End Sub—–>执行某项动作的一套指令,不返回运行的结果。

Function 程序名() End Functino ——>可以返回一个值或者一个数组

变量: Dim 变量名 As 数据类型, 如果不定义变量类型,则为Variant, 不同声明方法的变量作用域不同, 如

在一个过程中声明的Dim和Static变量为本地变量; 在一个模块的第一个过程之前声明的Dim和Private变量的作用域为此模块中的所有过程,即模块作用域下的变量; 在一个模块的第一个过程之前声明的Public变量作用域为所有模块,即共有变量。

日期变量的赋值:A=#2012-3-10#

常量:Const常量名 As 数据类型 = 常量值

数组:Dim 数组名 (a to b) As 数据类型

Dim arr()

arr = Array(1,2,3,4,5)

arr = Split("1,2,3,4,5",",") //索引号总是从0开始

与Split相反的是

其他方式:

Dim arr(1 To 100)

FOR i = 1 To 100

arr(i) = Cells(i,1)

NEXT

或者直接:arr = [a1:a100]

察看数组的最大和最小索引号:UBOUND(arr)、LBOUND(arr)

7.程序控制语句

一、IF逻辑表达式 then

else if 逻辑表达式 then

END IF

二、SELECT CASE 测试表达式

CASE 条件表达式1

语句1

CASE 条件表达式1

语句2

END SELECT

三、FOR 循环变量=初值 to 终值 step 步长

循环体1

EXIT FOR

循环体2

NEXT (循环变量)

四、FOR EACH 元素变量 IN 对象集合或者数组

语句1

EXIT FOR

语句2

NEXT

五、DO WHILE/UNTIL 循环条件

语句1

EXIT DO

语句2

LOOP (WHILE /UNTIL循环条件) //while语句可以放在前面或者后面

一段c代码,请无视:

void replaceBlank(char string[],int length){char * p = string + length + 1;char * q = string;int count = 0;while(*q != "\0"){if(*q == " ")count++;q++;}q = string + length + 2*count + 1;while(p != q && p - string >= 0){if(*q != " ")*q = *p;else{p--;*q-- = "0";*q-- = "2";*q-- = "%";}}}

实际开发中遇到的VBA:

1.Screenupdating:Application的一个属性,是Boolean 数据类型,意思是屏幕窗口刷新是否打开。Application.Screenupdating=False,意思是屏幕窗口刷新关闭,可以加快程序运行,加在程序开头;Application.Screenupdating=True,意思是屏幕窗口刷新打开,加在程序结尾。以上两句应在程序调试好之后再添加。

2.with…end with

with语句:

With Object

[statements]

End With

With 语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。例如,要改变一个对象的多个属性,可以在 With 控制结构中加上属性的赋值语句,这时候只是引用对象一次而不是在每个属性赋值时都要引用它。可以将一个 With 块放在另一个之中,而产生嵌套的 With 语句。但是,由于外层 With 块成员会在内层的 With 块中被屏蔽住,所以必须在内层的 With 块中,使用完整的对象引用来指出在外层的 With 块中的对象成员。

3.ActiveSheet.QueryTables.add(Connection, Destination, Sql)

QueryTables集合属于Worksheet对象,包含指定工作表的所有QueryTable对象。Add方法返回表示一个新的查询的QueryTable对象。

可用 Worksheets(index)(其中 index 为工作表编号或名称)返回单个 Worksheet对象;

4.WebFormatting = xlWebFormattingNone 不导入任何格式

Refresh BackgroundQuery:=False 更新数据

5.Option Explicit 强制对模块内所有变量进行声明

给普通变量赋值使用LET ,只是LET 可以省略;给对象变量赋值使用SET,SET 不能省略。

DIM 语句的作用是声明变量并分配存储空间;如果不指定数据类型或对象类型,也就是不用DIM定义,且在模块中没有 Deftype 语句,则该变量按缺省设置是 Variant 类型。

Object包含对某个对象的引用(地址),占用4字节的存储空间,可对任何对象引用,缺省值为Nothing。Object包含对某个对象的引用(地址),占用4字节的存储空间,可对任何对象引用,缺省值为Nothing。Dim myObject As <库名>.<类名>,此方法指向类的类型库,但没有给该变量赋予任何类的实例。此时,变量myObject被赋值为Nothing。若要将类的实例引用赋予该变量,必须在使用该变量之前用Set语句赋值。如Set myObject=<库名>.<类名>。

6.VBA图表相关

图表区:ChartArea、 绘图区:PlotArea(调整绘图区的大小以及在图表中的位置,指定绘图区的Top、Left、Height和Width属性。)

数据系列:Series(指定给定系列语法:ChatObject.SeriesCollection(Index),其中Index是数字范围,从1开始,最大值是图表中系列的数量或系列名称的数量。)

图表轴:Axis(指定给定轴的简单语法:ChatObject.Axes(Type),其中Type指定轴的Excel VBA常量),辅助轴:ChatObject.Axes(Type,AxisGroup)。

图表标题、图例和数据表:ChartTitle、HasLegend和HasDataTable,可以用VBA指定图表标题和图例的位置、文字和文字格式。

可用 ChartObjects 方法返回 ChartObjects 集合。下例删除工作表 Sheet1 上的所有嵌入图表,Worksheets("sheet1").ChartObjects.Delete

可用 Add 方法新建空白嵌入图表,并将其添加到集合中,

Dim ch As ChartObject

Set ch = Worksheets("sheet1").ChartObjects.Add(100, 30, 400, 250)

ch.Chart.ChartWizard source:=Worksheets("sheet1").Range("a1:a20"),gallery:=xlLine, title:="New Chart"

当你能爱的时候就不要放弃爱

Excel VBA 学习笔记(陆续更新)

相关文章:

你感兴趣的文章:

标签云: