使用VBAForExcel的技巧
提交日期:2003-08-07 浏览: 207
在Excel里通过使用宏我们可以实现许多普通方法无法实现的功能!一个简单的例子就足以说明这一点:
在Excel里的sheet1的SelectionChange事件里写入如下代码:
MsgBoxSelection.Cells.Count
那么在你点选单元格的时候,excel会弹出提示框告诉你所选取的单元格的数目。整个过程的完整代码为:
PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)
MsgBoxSelection.Cells.Count
EndSub
是不是很奇妙!在Excel里编写宏的语言是vba语言(visualbasicforapplication),学好它对你更好的使用Excel绝对大有裨益!很多初学者都在这方面开始努力,但是在自己独立编写宏的时候也常常碰到一些问题。而且这些问题在excel的帮助文件里很难找到答案。我在这里列举几个出现频率较高的问题与大家一起分析,希望能带给大家一些启发。
1、如何隐藏宏的执行过程
一个宏编写完后,执行的过程就是一行一行运行代码的过程,这时屏幕会反映每一个步骤所产生的变化。这样不仅看上去不美观而且会暴露编程思路。更重要的是这样也会降低系统的执行速度!所以,我们应该屏蔽掉这个过程。方法:在你写的宏代码的第一行前加上一句:Applicatiion.screenupdate=False。然后在你的代码的最后加上:Applicatiion.screenupdate=True。这样就可以达到你屏蔽程序执行过程的目的了。
2、如何在宏代码里使用工作表函数
在Excel里有很多函数使用起来很方便,譬如;sum;average;min;max.但是工作表函数是不能在宏代码里直接使用的。它们和vba语言中的函数是不一样的。Vba中的函数例如val,mid在工作表里也不能通用。所以我在这里讲解一下在vba语言里调用工作表函数的方法。让一个变量得到单元格A1到B5的总和(变量设为X)X=SUM(RANGE("A1:B5"))的写法明显是行不通的;正确写法是X=APPLICATION.WORKSHEETFUNCTION.SUM(RANGE("A1:B5"))。也就是说必须通过Application对象的Worksheetfunction属性来间接调用工作表函数!
3、单元格区域与数组
我们有时会需要将一个区域的值赋予一个数组或者正好相反是要将一个数组得值填充到一个区域,例如我们要将区域A2到D4的所有单元格中的结果存入一个数组:首先,我们应该定义一个数组变量DATA,因为EXCEL工作表示二维的,故而使用二维的数组变量也比较合适!由于A2

4这个区域有3行,4列所以:
DIMDATA(1TO3,1TO4)
FORA=1TO3
FORB=1TO4
DATA(A,B)=RANGE("A2

4").CELLS(A,B).VALUE
NEXTB
NEXTA
这样DATA变量就拥有了该区域的所有单元格结果,通过MSGBOXDATA(1,1)类似的方法里可以一个个的验证。之后如果你要将该变量的结果赋予一个区域例如:A6

8;可以用如下代码:RANGE("A6

8").VALUE=DATA。的例子就足以说明这一点:
我帮你查一下不行啊没有你的方法啊