Excel VBA编程
2020年11月17日
目录
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,可以采用变体型。
2.3 变量声明
Dim name As String '定义姓名,用于在循环时将同一姓名的数据纳入一张表中
name = "张三"
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控件:表单控制,关联事件。
4 Excel表格元素控制
4.1 工作簿控制:Workbooks
4.2 工作表控制:Worksheets
4.3 单元格操作:Cells
4.4 单元格区域操作:Range
5 操作流程
5.1 进入设计模式
打开开发工具-》选择设计模式
5.2 添加ActiveX控件
点击工具栏插入-》选择ActiveX-》点击第一个按钮-》在表格上画出按钮。
5.3 双击按钮-》进入编程模式
当在表格点击此按钮时,就可以编写程序了。
在编程界面写下如下:将第3行,第1列的值修改为abc123
Worksheets(1).Cells(3, 1) = "abc123"
5.4 执行程序
取消设计模式-》点击按钮-》(3,A)就编程abc123了。
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