当前位置:文档之家› VBA基础知识

VBA基础知识

VBA基础知识1、VBA有三种程序类型:宏程序、自定义函数程序、事件程序1)宏程序Sub A()’公用程序,可以被其它程序调用Range("a1”)= 100End SubPrivate Sub A()’私有程序,不可以被其它程序调用Range(”a1")= 100End Sub调用实例1):Sub A()Range("a1”)= 100End SubSub B()Call A ’Call为调用命令,也可以省略End Sub调用实例2):Sub 统计(N)If N = 1 ThenRange(”C2")= Application。

WorksheetFunction.CountA(Range(”a:a")) ElseIf N = 0 ThenRange(”D2”)= Application.WorksheetFunction.Sum(Range(”a:a"))End SubSub 计数()统计1End SubSub 求和()统计0End Sub2)自定义函数程序Function 工作表数量()工作表数量=Sheets.Count '取工作表个数End Sub应用:(1)可以在单元格中直接调用:例在A1中输入:=工作表数量()(2)程序中调用:Sub A1中输入工作表数量()Range (“A1”) = 工作表数量'调用自定义函数End Sub3)事件程序例如程序在打开工作表时触发:Private Sub Workbook_Open()Range (“A1”) = 100End SubSub mycopy()Range(”A1”)。

Copy Range(”B1”) '将A1单元格里的数据复制到B1单元格End SubSub mydel()Sheets("sheet1”)。

Delete '删除工作表sheet1End Sub常用的函数:&(连接函数);\(整除函数);mod(求余数函数)2、With语句:'未使用with语句Sub 字体格式1()Range("A1") = ”宋体”Range(”A1")。

Font.Size = 14Range("A1").Font.ColorIndex = 3Range(”A1")。

Font。

Bold = TrueEnd Sub'使用with语句Sub 字体格式1()With Range("A1").Font。

Name = ”宋体”.Size = 14.ColorIndex = 3.Bold = TrueEnd WithEnd Sub3、If语句:1)单条件判断:Sub 正数()If Range("a1").Value 〉0 ThenRange("a2”)。

Value = “正数”ElseRange(”a2").Value = “非正数”End IfEnd Sub2)多条件判断:Sub 正数()If Range("c1”)。

Value > 0 ThenRange(”d1”)。

Value = "大于零”ElseIf Range(”c1")。

Value 〈0 ThenRange("d1")。

Value = "小于零”ElseIf Range("c1")。

Value = 0 ThenRange("d1”)。

Value = "等于零”End IfEnd SubSub 判断男女()If Range("c1").Value = 1 ThenRange(”d1").Value = ”男"ElseIf Range(”c1")。

Value = 0 ThenRange(”d1").Value = ”女"ElseRange(”d1”)。

Value = "非男非女"End IfEnd SubPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)Call 判断男女’调用上面子程序,当单元格数值改变时触发子程序运行End Sub3)使用Select Case语句:Sub 多重判断()Select Case Range("a1")Case Is 〈0Range(”b1")= "小于零”Case Is > 0Range(”b1”) = ”大于零”Case Is = 0Range(”b1”)= ”等于零"End SelectEnd Sub4)循环语句:'循环语句,从A1~A100依次填入1~100Sub a()Dim x ’定义变量XFor x = 1 To 100Range(”a" &x)= xNext xEnd SubSub a()Dim x '定义变量XFor x = 1 To 100 Step 2Range("a” & x) = xNext xEnd Sub4、模块:普通模块:无事件类模块:有事件工作表和工作簿是类模块,窗体也是类模块5、如何新建并保存一个工作簿:Sub 新建并保存1()ActiveWorkbook.SaveAS “c:/Mbook1。

xls" ‘ActiveWorkbook为活动工作簿End SubSub 新建并保存2()Workbook。

AddThisWorkbook.SaveAS “c:/Mbook1。

xls”‘ThisWorkbook为当前工作簿End SubSub 新建并保存3()Dim MBOOK AS WorkbookSet MBOOK = Workbooks。

AddMBOOK。

SaveAS “c:/Mbook。

xls”Set MBOOK = NothingEnd Sub6、工作表事件:Activate 激活工作表时Deactivate 工作表从活动状态转为非活动状态时BeforeDoubleClick 双击工件表前BeforeRightClick 右键单击工作表时Calculate 对工作表进行重新计算之后Change 更改工作表中的单元格,或外部链接引起单元格发生改变时FollowHyperLink 单击工作表上的任意超链接时PivotTableUpdate 在工作簿中的数据透视表更新之后SelectionChange 工作表上的选定区域发生改变时7、选取某个单元格:1)range(“单元格地址")。

select 例如:Range(“A1")。

Select 单元格地址必须用双引号括起来2)range(“列标”&行数).select 例如:Range(“A”&1)。

Select 列标是用英文字母表示,这里的1可为变量3)range(“定义名称”).select 例如:Range(“range1”)。

Select 定义的名称必须要用双引号括起来4)cells(行数,列数).select 例如:cells(1,1).Select 行数和列数不能用双引号括起来5)cells(行数,“列标”)。

select 例如:cells(1,”A”).Select 行数不需要双引号,列标一定要双引号6)cells(单元格序号).select 例如:cells(1)。

Select 单元格序号的顺序是先从左到右,要从上到下7)[单元格地址].select 例如:[A1]。

Select 单元格地址不能用双引号括起来8、选取指定工作表的某个单元格:1)Sheets(“工作表名称”)。

单元格.select 例如:Sheets(“单元格的表示方法")。

Activate ‘表示先将工作表激活Sheets(“单元格的表示方法”)。

Range(“A1”)。

Select2)Sheet1。

单元格.select 例如:Sheet1。

Activate ‘表示先将工作表激活Sheet1.Range(“A1”)。

Select3)Sheets(工作表序号).单元格.select 例如:Sheets(1)。

Activate ‘表示先将工作表激活Sheets(1).Range(“A1").Select9、练习:在B32显示工作表中任意被选择单元格的序号:序号=(行数—1)*256+列数事件失效和事件恢复代码:Sub unEnableEvent() ‘事件失活Application . EnableEvents =FalseEnd SubSub EnableEvent() ‘事件恢复Application . EnableEvents =TrueEnd SubPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)Dim x As Long ’声明变量XDim y As Long '声明变量Yx = Target。

Row '把当前单元格的行数赋值给X,注意,如果为ROWS,则返回一个对象,y = Target。

Column '把当前单元格的列数赋值给Y,注意,如果为columns,则返回一个对象Range("序号”)= (x —1)*256 + y ’把当前单元格的End Sub10、选取单元格区域:Cells .Select ‘C ells代表本工作表所有单元格Rows .Select ‘R ows 代表本工作表所有行,即所有单元格Columns.Select ‘C olumns 代表本工作表所有列,即所有单元格。

相关主题