当前位置:文档之家› EXCEL 2003 巨集与VBA介绍

EXCEL 2003 巨集与VBA介绍

EXCEL 2003 巨集与VBA介绍
EXCEL 2003 巨集与VBA介绍

EXCEL 宏与VBA介绍

宏:一连串的执行指令所构成,可以利用Visual Basic程序指令、也可以利用录制宏的方式来录写指令。

如何录制宏:

1.如果要执行宏,则需要更改「EXCEL选项」\「信任中心」

\「信任中心设定」\「宏设定」

2.在「检视」、「宏」/「录制宏」

3.设定「宏名称」、快捷键(Ctrl+英文键),将宏储存位置

4.开始录制相关动作(录制是以绝对地址方式来录制,如果

要以相对地址来录制则要选「以相对位置录制」)

5.停止录制

6.查看宏程序代码,并作必要的修正

7.执行宏(可以利用「执行宏」或快捷键、或利用窗体按钮

来执行)

如果要编修窗体时,可以按下Ctrl+该对象,进行修改。

范例:下载(录制宏)

1.C6至C12的数值格式设定「"进货" #,##0;"出货" #,##0」

2.「检视」、「宏」、「开始录制」,并开始执行下列指令

3.选取范围C6至C12,并执行「复制」

4.选取范围B6至B12,并按下「选择性贴上」,选择贴上「值」与运算「加」

5.选取范围C6至C12,并按下「Del」,清除单元格内容

6.在单元格C6单击

7.停止录制宏

8.在工作表中,产生一个按钮,并指定该按钮执行该宏,并将其按钮文字改为异动

9.每次输入异动数据(正的表示进货,负的表示出货),按下按钮即可执行宏

VBA简介:Visual Basic for Applications,利用VB来延申Office的能力。开启EXCEL 显示开发人员(在「EXCEL选项」/「常用」中勾选),再撰写或修改VBA程序。

VBA主要的组成要件:对象,其中包括

1.属性:对对象状态的描述,可以定义对象的特性(大小、颜色、状态等)。

2.方法:对象的某些特定动作,可以指定动作的细别内容。其主要结构如下:

物件.方法指定自变量1:=xl常数1, 指定自变量2:=xl常数2,.... 指定自变量设定为某些内建常数,每个内建常数前会有关键词连接。

?EXCEL对象的常数会以xl开始。

?VB的语句及函数的常数会以vb开始。

?Office对象模式的常数会以mso开始。

3.事件:对象的触发反应。

EXCEL常用的物件

1.Workbook 活页簿

2.Workbooks 活页簿集合

3.Workbooks("filename") 档名为filename的活页簿

4.ActiveWorkbook 正在作用中的活页簿

5.Sheets 活页簿中所有工作表

6.Sheets(n) 活页簿中第n张工作表

7.Worksheet 工作表

8.Worksheets 所有工作表(包括图表)

9.Worksheets("sheet") 指表名为sheet工作表

10.ActiveSheet 正在作用中的工作表

11.Columns("c1:c2") c1至c2栏(其中c1,c2为A~Z或AA~XFD 等栏名)

12.Rows("r1:r2") r1至r2列(其中r1,r2为1~1048576等列名

13.Range("x1:x2") x1至x2间的单元格(其中x1,x2为单元格地址名称)

14.cells(i,j) 单元格(第i列、第j行)

15.ActiveCell 当前单元格

16.Selection 目前所选取的对象

范例:

o Workbooks("Book1").Sheets("Sheet1").Range("A1:D5").Font.B old = True

o Worksheets("Sheet1").Cells.ClearContents

o Worksheets("Sheet1").Rows(1).Font.Bold = True

o Range("1:1,3:3,8:8")

o Worksheets("Sheet1").Cells(6, 1).Value = 10

o Worksheets("Sheet1").[A1:B5].ClearContents

o ActiveCell.Offset(1, 3).Font.Underline = xlDouble

活页簿常用属性:

o https://www.doczj.com/doc/3d16701438.html, 目前活页簿的名称

o ActiveWorkBook.Save 储存目前的活页簿

o ActiveWorkBook.SaveAs Filename := "filename" 另储新档o WorkBooks.Add 新增活页簿

o WorkBooks(i).Close [SaveChange, Filename, RouteWorkbook] 关闭指定的第i个活页簿

?SaveChange := True 改变储存

?SaveChange := False 不会改变储存

?SaveChange省略时,会出现对话框

?filename := "檔名"

o WorkBooks.Open "filename" 开启一个活页簿

o Application.Windows 所有活页簿窗口

o WorkBooks.Count 活页簿的数量

o WorkBooks.Item(Index) 传回单一活页簿,由索引值指定

工作表常用属性:

o Worksheets.Add [Before, After, Count, Type] 新增工作表

?Before := Worksheets(n) 出现于某工作表之前

?After := Worksheets(n) 出现于某工作表之后

?Count := n 新增工作表数量

?Type := xlWorksheet (工作表) 或xlChart (图表)

o https://www.doczj.com/doc/3d16701438.html, 工作表名称

o WorkSheets("Sheet1").Activate 设定工作表为目前作用的功作表

单元格常用属性:

o Rows.RowHeight 指定范围内的所有列高

o Columns.ColumnsWidth:指定范围内的所栏宽

o expression.NumberFormatLocal 以本地的数字格式

o Range.CurrentRegion 目前区域是指以任意空白列及空白栏的组合为边界的范围

o范例:

o Worksheets("Sheet1").Activate

o ActiveCell.CurrentRegion.Select

o expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo) 以参照的方式

?RowAbsolute 为True,则用列的绝对地址

?ColumnAbsolute 为True,则用栏的绝对地址

?ReferenceStyle 默认值为xlA1,如为xlR1C1则为R1C1的表达方式

o expression.count 传回范围的数量(可以是栏数、列数或单元格数量)

o expression.Item(RowIndex, ColumnIndex) 代表相对于指定之范围某个位移距离的范围。

o expression.value 传回或设定对象的值

o expression.Formula 传回或设定对象的公式,代表A1 样式批注以及宏语言中的对象公式。

范例:Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10" o expression.FormulaR1C1 传回或设定对象的公式,并以宏语言中的R1C1 样式表示法表示

范例:Worksheets("Sheet1").Range("B1").FormulaR1C1 =

"=SQRT(R1C1)"

o expression.Text 传回或设定对象的文字

o范例:

o Set c = Worksheets("Sheet1").Range("B14")

o c.Value = 1198.3

o c.NumberFormat = "$#,##0_);($#,##0)"

o MsgBox c.Value

o MsgBox c.Text

常用方法:

o Range.Select方法/Selection属性设定目前选取的范围/使用目前所选取的范围

o范例:

o Sub Macro1()

o Sheets("Sheet1").Select

o Range("A1").Select

o ActiveCell.FormulaR1C1 = "Name"

o Range("B1").Select

o ActiveCell.FormulaR1C1 = "Address"

o Range("A1:B1").Select

o Selection.Font.Bold = True

o End Sub

o expression.Copy 将目前所选取的对象复制至剪贴簿o expression.Cut 将目前所选取的对象剪下

o expression.Delete 将目前所选取的对象删除

o expression.Paste 将剪贴簿的内容贴上

o范例:

o Sub CopyRow()

o Worksheets("Sheet1").Rows(1).Copy

o Worksheets("Sheet2").Select

o Worksheets("Sheet2").Rows(1).Select

o Worksheets("Sheet2").Paste

o End Sub

o expression.RasteSpecial(Paste,Operation, SkipBlanks, Transpose)

o范例:

o With Worksheets("Sheet1")

o .Range("C1:C5").Copy

o .Range("D1:D5").PasteSpecial _

o Operation:=xlPasteSpecialOperationAdd o End With

o Range.Activate 当前单元格

o Range.Clear 清除资料

o Range.ClearContents 清除数据内容

o Range.ClearFormats 清除数据格式

o Range.ClearComments 清除批注

o expression.AutoFit:自动调整列高和栏宽

o Range.FillDown、Range.FillUp、Range.FillLeft、Range.FillRight 填满

o Range.Offset (RowOffset, ColumnOffset) 指定区域的位移列与行

o范例:

o Sub MoveActive()

o Worksheets("Sheet1").Activate

o Range("A1:D10").Select

o ActiveCell.Value = "Monthly Totals"

o ActiveCell.Offset(0, 1).Activate

o End Sub

程序语法:

Dim 语句(变数)

Dim varname [ As [New] type]

type 包括Byte、Boolean、Integer、Long、Single、Double、Date、String、Object等

Set 语句(物件)

Set objectvar = {[New] objectexpression | Nothing}

例:Set RangeA = Range("A1:B2")

范例:

Sub Random()

Dim myRange As Range

Set myRange = Worksheets("Sheet1").Range("A1:D5")

myRange.Formula = "=RAND()"

myRange.Font.Bold = True

End Sub

?With 多种属性设定

With 物件

.属性1 = 设定值

.属性2 = 设定值

.... End With

范例:

Sub AddNew()

Set NewBook = Workbooks.Add

With NewBook

.Title = "All Sales"

.Subject = "Sales"

.SaveAs Filename:="Allsales.xls" End With

End Sub

?Array 数组

Array(Range1, Range2, ....)

范例:

Sub Several()

Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Select End Sub

?InputBox 函数

InputBox("文字说明",[,title][,default][,xpos][,ypos][,helpfile, context])

?MsgBox 函数

MsgBox "文字说明"

?Union 将多个范围合并成单一Range对象Union(Range1, Range2, ...)

范例:

Sub MultipleRange()

Dim r1, r2, myMultipleRange As Range

Set r1 = Sheets("Sheet1").Range("A1:B2") Set r2 = Sheets("Sheet1").Range("C3:D4") Set myMultipleRange = Union(r1, r2)

myMultipleRange.Font.Bold = True

End Sub

?For... Next 语句

For counter = start to end [ step stepvalue] [statements]

[Exit For]

[statements]

Next [counter]

范例:

Sub CycleThrough()

Dim Counter As Integer

For Counter = 1 To 20

Worksheets("Sheet1").Cells(Counter, 3).Value = Counter Next Counter

End Sub

For Each... Next 语句

For Each element In group

[statements]

[Exit For]

[statements]

Next [element]

范例:

Sub ApplyColor()

Const Limit As Integer = 25

For Each c In Range("MyRange")

If c.Value > Limit Then

c.Interior.ColorIndex = 27

End If

Next c

End Sub

Do ... Loop 语句

Do [{While | Until} condition] [statements]

[Exit Do]

[statements]

Loop

Do

[statements]

[Exit Do]

[statements]

Loop [{While | Until} condition]

If ... Then ... Else ... 语句

If condition Then [statements][Else elsestatements] 或

If condition Then

[statements]

[ElseIf condition-n Then [elseifstatements]...

[Else

[elsestatements]]

End If

?

?

?

?范例:下载(VBA程序范例)

相关主题
文本预览
相关文档 最新文档