现在的位置: 首页 > 综合 > 正文

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

2018年02月18日 ⁄ 综合 ⁄ 共 3509字 ⁄ 字号 评论关闭

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"

 

抱歉!评论已关闭.