VBA学习笔记-2014-11-3

简单VBA、宏 学习笔记

对比EXCEL中的相同数据,找出不同数据(数据表的减法运算) Email:vincen20@163.com ii使用前操作提示: 1、 打开VBA编辑器

(1)打开VBA编辑器可以使用快捷键 ALT+F11 或者点击菜单栏上 工具-〉宏-〉VISUAL BASIC 编辑器

(2)在编辑器的菜单栏中 选择 插入-〉模板,然后就可以在弹出的窗口中输入代码。 2、 关于宏安全性的设定

由于宏病毒的知名度,在写有宏代码的文档中,EXCEL把宏的安全性默认为比较高的级别,如果有对话框提示,请点击启用宏。如果没有提示,宏又没有办法运行,请在菜单栏中选择工具-〉宏-〉安全性, 在弹出的对话框中选择安全级别选项卡中选择中。然后关闭EXCEL,再重新打开。

1、 打开EXCEL文件

Workbooks.Open Filename:=“EXCEL FILE.xls” 程序段1:、//打开指定EXCEL文件

pathfile = \ ?pathfile为存储EXCEL文件的路径。

Workbooks.Open Filename:=pathfile ?打开EXCEL文件

有时为了方便修改打开的文件,可以使用变量来存储要打开的文件路径。

程序段2:、//选定指定的EXCEL、已打开的文件

Workbooks(\

2、 引用工作表

在一个EXCEL工作薄中,可以有256个工作表,这时要指定工作表。指定工作表的命令为: Sheets(“sheet1”) 或者 Sheets(0) Sheet1为工作表名,也可是序号如:sheets(0)

命令Sheets(“sheet1”)代表工作表sheet1。 程序段://选择指定的工作表

Workbooks(\ ?选定指定的EXCEL、已打开的文件 Sheets(“sheet1”). Activate ?选择指定的工作表

也可写成Workbooks(\“sheet1”). Activate

1

3、 引用单元格

我理解的EXCEL表是由多个小的单元格组成的,所以引用单元格可以用Cells、Range等命令。 Cells(1,1) 或 Cells(1,“A”) 第1行 Cells为单元格,表示1行A列,即A1 第1列

命令Cells(1,1).value代表单元格A1的内容。 程序段://读取指定单元格的值,并赋给变量var。 var=Cells(2,3).value ?读取2行3列的值。

var=Cells(2,“C”).value ‘读取单元格C2的值。

Cells命令可以用在FOR循环中,这样可以方便一个一个的遍历数据。

TIPS: 如果获取的单元格是字符串时,在得到值后,建议使用Trim()函数来去掉两端的空格。 4、 使用

FOR…NEXT语句

当要重复的读取某些单元格时,可以使用循环命令,它可以让EXCEL在满足条件时,一直的执行指定的代码。 For i=1 to 10 条件语句,代表当变量I的值从1到10时 sum=sum+i Next 满足条件时,执行的代码段,这里代表计算各0+1+2+….+10 循环结束,配对标志,和FOR 相配对。 程序段://读取A1:B10的值

分析:区域A1:B10 共有10行2列,可以使用双重循环来读取每个单元格的值。定义变量I为行,定义J为列。读取顺序为A1\\B1\\A2\\B2\\A3\\B3….A10\\B10即按行读取 //…..选定好了工作表 For i=1 to 10 ?遍历行

For j=1 to 2‘遍历列

var=Trim(Cells(i,j).value) ?读取I行j列的值 Msgbox(var) ?通过对话框显示读取到的值 Next ‘匹配J的FOR Next ?匹配I的FOR

如果要求按列读取数据A1\\A2\\A3…A10\\B1\\B2\\B3…B10时代码如下 For j=1 to 2 ?遍历列

For i=1 to 10‘遍历行

var=Trim(Cells(i,j).value) ?读取I行j列的值 Msgbox(var) ?通过对话框显示读取到的值 Next ‘匹配i的FOR Next ?匹配j的FOR

TIPS:在处理大量数据时,FOR语句非常实用。

2

5、 使用IF ..THEN语句

条件判断语句可用于对不同条件执行不同程序代码,进而实现程序的动态化,使程序处理不同的情况。 程序段:

S1=Trim(Cells(1,1).Value) ?读取单元格A1的内容。 S2=Trim(Cells(1,2).Value) ?读取单元格B1的内容。 If (s1=s2) Then 条件语句,若条件成立执行THEN 和ELSE间的语句。 Msgbox(“A1=B1”) ?弹出对话框,提示相等 Else 当不条件不成立时,既s1不等于s2时执行ELSE后的语句。

Msgbox(“A1<>B1”) ?弹出对话框,提示不相等 End if 以上代码可写成

条件语句结束,配对标志,和IF 相配对。

if(Trim(Cells(1,1).value)=Trim(cells(1,2).value)) then

Msgbox(“A1=B1”)

Else

Msgbox(“A1<>B1”)

End if

若没有ELSE语句时,可写成一句

if(Trim(Cells(1,1).value)=Trim(cells(1,2).value)) Then Msgbox(“A1=B1”)

当有多个条件时,可在ELSE 后加 IF

if(key) then stat1

else if(key2) then stat2 …… end if

多个条件时也可使用Select Case…语句。

3

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4