Excel VBA 的基本使用与代码示例

前言

本文整理了 Excel 中 VBA 的常用操作代码示例。

使用了 ms office 2016 。

开始

step.1 新建excel文件

新建excel文件,命名为test.xlsx ,如下图所示。

########### 1

step.2 启用开发工具

文件->选项->自定义功能区,将【开发工具】全打钩后,点击确定。

###########  2

step.3 VBA调用Excel函数

使用录制宏功能,实现VBA调用Excel的SUM函数。

首先准备测试数据。在 Sheet1 的 A1 单元格输入 1, B1 单元格输入 2 。

########### 3

下面开始录制宏。 点击工具栏的[开发工具]->[录制宏]。

########## 4

在弹出框中直接点击确定

########### 5

然后选中 A1:C1 单元格,点击工具栏的[开始]->[自动求和]

############# 6

点击工具栏的[开发工具]->[停止录制], 然后点击【宏】,选中刚刚录制的【宏1】后,点击右侧的编辑按钮。可以看到宏1的代码如下

Sub 宏1()
'
' 宏1 宏
'

'
    Range("A1:C1").Select
    Range("C1").Activate
    ActiveCell.FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"
    Range("A1:C1").Select

End Sub

从上面的操作可以看出,使用VBA时,在【录制宏】的基础上修改代码 是一种不错的选择。VBA中可以直接调用EXCEL的公式,对于其他公式也可以用录制宏的方法来实现代码。

step.4 获得行数列数

首先,构造测试数据:

########## 7

测试数据中,有3行4列,下面我们要获得3和4这两个数字。同样,我们采用先录制宏的方式。

点击录制宏后,选中A10单元格,按Ctrl+↑方向键,焦点将转移到A3单元格,然后点击K1单元格,按Ctrl+←方向键,焦点将转移到D1单元格。点击停止录制后,查看所录制宏的VBA代码。

Sub 宏3()
'
' 宏3 宏
'

'
    Range("A10").Select
    Selection.End(xlUp).Select
    Range("K1").Select
    Selection.End(xlToLeft).Select
End Sub

将该宏的内部代码替换为下面代码

Dim rowCount As Integer
Dim colCount As Integer

Range("A10").Select
Selection.End(xlUp).Select
rowCount = Selection.row

Range("K1").Select
Selection.End(xlToLeft).Select
colCount = Selection.Column

MsgBox ("行数为" & rowCount & " ,列数为" & colCount)

执行该宏,运行结果符合预期

############# 8

在行数列数未知的情况下,应将上面示例中的A10替换为A10000等非常靠下的格子。K1同理。

step.5 构造SQL的insert语句

首先,构造测试数据(纯属虚构):

########## 9

假设4个字段分别为 id,name,job,salary,需要插入到employee表中。拿第一条数据为例:

insert into employee(id,name,job,salary) values (‘10001’,‘吴凡’,‘开发工程师’,‘21000’);

下面我们要构造SQL语句,并将SQL语句放到G1单元格。 VBA代码如下:

Dim i As Integer
Dim sqlStr As String
Dim sqlTemp As String

sqlStr = ""
For i = 1 To 20
    sqlTemp = "insert into employee(id,name,job,salary) values ('" & Range("A" & i).Value & "','" & Range("B" & i).Value & "','" & Range("C" & i).Value & "','" & Range("D" & i).Value & "');"
    sqlStr = sqlStr & sqlTemp & vbCrLf
Next i

Range("G1").Value = sqlStr

运行该代码后:

########## 10

将G1单元格内容复制出来:

"insert into employee(id,name,job,salary) values ('10001','吴凡','开发工程师','21000');
insert into employee(id,name,job,salary) values ('10002','马里奥','美工','15000');
insert into employee(id,name,job,salary) values ('10003','任天堂','总经理','65000');
insert into employee(id,name,job,salary) values ('10004','张益达','扫地','10000');
insert into employee(id,name,job,salary) values ('10005','娃哈哈','扫地','10000');
insert into employee(id,name,job,salary) values ('10006','爽歪歪','扫地','10000');
insert into employee(id,name,job,salary) values ('10007','张三','扫地','5000');
insert into employee(id,name,job,salary) values ('10008','李四','扫地','5000');
insert into employee(id,name,job,salary) values ('10009','王五','扫地','5000');
insert into employee(id,name,job,salary) values ('10010','赵六','扫地','5000');
insert into employee(id,name,job,salary) values ('10011','小七','扫地','5000');
insert into employee(id,name,job,salary) values ('10012','小八','扫地','5000');
insert into employee(id,name,job,salary) values ('10013','小九','扫地','5000');
insert into employee(id,name,job,salary) values ('10014','赵云','扫地','5000');
insert into employee(id,name,job,salary) values ('10015','王宝','扫地','5000');
insert into employee(id,name,job,salary) values ('10016','孙1','扫地','5000');
insert into employee(id,name,job,salary) values ('10017','周2','扫地','5000');
insert into employee(id,name,job,salary) values ('10018','李11','扫地','5000');
insert into employee(id,name,job,salary) values ('10019','薇11','扫地','5000');
insert into employee(id,name,job,salary) values ('10020','歌11','扫地','5000');
"

结果符合预期。

结束

这里整理了几个小例子,如果读者有其他需求的话可以直接留言,博主会将留言的内容做成代码示例补充到该博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值