Excel VBA编程

                                            2020年11月17日

                                           [email protected]

 

目录

1       概述. 2

2       基本语法. 2

3       窗体控件. 4

4       工作簿控制. 5

5       操作流程. 6

6       实例:在身份证和公司表中,查找指定名字和工号的人员,返回公司名字和身份证号。. 8

 

 

1 概述

VBA使用编程的方式操作Excel的工作簿,工作表sheet,行row,列column,区域range,单元格cells等的值与属性。

2 基本语法

2.1 字母打头,由字母、数字和下划线组成

2.2 数据类型

包括String,Byte,Boolean,Integer,Long,Single,Double,Date,Currency,Decimal,Variant,Object,可以采用变体型。

Excel VBA编程

2.3 变量声明

Dim name As String '定义姓名,用于在循环时将同一姓名的数据纳入一张表中

name = "张三"

Excel VBA编程

2.4 常量声明:const

2.5 数组:dim a(行,列) as 类型

2.6 多行语句:用:分割

2.7 逻辑语句:if,for,Goto

2.8 sub过程:不返回值

2.9 function 函数:可以返回值

2.10 字符串操作:&强制连接,+同类型连接。

sheetComID.Cells(8, "B").Value = R & "," & Cl

2.11 with:对象引用,简化语法。

With sheetComID.Range("A1:E100")

Set C = .Find(name, LookIn:=xlValues) '查找值

End With

3 窗体控件

3.1 添加控件

开发工具-》插入-》控件。

表单控件:整体控制,直接操作单元格或宏,不能关联事件。

ActiveX控件:表单控制,关联事件。

Excel VBA编程

4 Excel表格元素控制

4.1 工作簿控制:Workbooks

Excel VBA编程

4.2 工作表控制:Worksheets

Excel VBA编程

4.3 单元格操作:Cells

Excel VBA编程

Excel VBA编程

4.4 单元格区域操作:Range

 

Excel VBA编程

5 操作流程

5.1 进入设计模式

打开开发工具-》选择设计模式

Excel VBA编程

5.2 添加ActiveX控件

点击工具栏插入-》选择ActiveX-》点击第一个按钮-》在表格上画出按钮。

Excel VBA编程

Excel VBA编程

5.3 双击按钮-》进入编程模式

当在表格点击此按钮时,就可以编写程序了。

Excel VBA编程

在编程界面写下如下:将第3行,第1列的值修改为abc123

Worksheets(1).Cells(3, 1) = "abc123"

Excel VBA编程

5.4 执行程序

取消设计模式-》点击按钮-》(3,A)就编程abc123了。

 

Excel VBA编程

6 实例:在身份证和公司表中,查找指定名字和工号的人员,返回公司名字和身份证号。

Private Sub CommandButton2_Click()

Dim name As String '定义姓名,用于在循环时将同一姓名的数据纳入一张表中

name = "张三"

Dim no As String

no = "0119"

 

Dim sheetComID As Excel.Worksheet '指定要操作的sheet表格:身份证公司

Dim C As Excel.Range

Set sheetComID = ThisWorkbook.Sheets("身份证公司")

Set C = sheetComID.Range("A1:E10").Find("徐佳")

Dim R As Long

Dim C1 As Long

 

Dim company As String '公司名

company = ""

Dim id As String '身份证号

id = ""

 

'查找第一个姓名和工号相符的项

With sheetComID.Range("A1:E100")

Set C = .Find(name, LookIn:=xlValues) '查找值

Do While Not C Is Nothing '循环查找

R = C.row '返回行

If sheetComID.Cells(R, "A").Value = no Then

company = sheetComID.Cells(R, "C").Value '公司名

id = sheetComID.Cells(R, "D").Value '身份证号

sheetComID.Cells(R + 8, "C").Value = company

sheetComID.Cells(R + 8, "D").Value = id

Exit Do

End If

Set C = .FindNext(C)

Loop

End With

End Sub